基 class 可以知道实现它的对象的属性吗
Can a base class know properties of the object implementing it
我正在实现一个 Base 对象 class 来实现 XmlSerializer。
class FN_ObjectBase
{
public object FromXML(string xml)
{
var serializer = new XmlSerializer(typeof("ObjectA??"));
var reader = new XmlTextReader(new StringReader(xml));
var scriptItem = serializer.Deserialize(reader);
return scriptItem;
}
}
class ObjectA : FN_ObjectBase
{
public object = new ObjectA.FromXML("serializedXML");
}
如何正确编写 FromXML 方法以基于派生的对象创建任何对象class?
尝试使用通用方法:
public T FromXML<T>(string xml)
{
var serializer = new XmlSerializer(typeof(T));
var reader = new XmlTextReader(new StringReader(xml));
var scriptItem = serializer.Deserialize(reader);
return (T)scriptItem;
}
称呼它:
FromXML<ObjectA>("serialized xml")
面向对象规则:
切勿在基类型中使用派生类型。
您不需要抽象方法,虽然通用方法实现可以工作,但它向调用者发出略有不同(尽管可能更好)的意图。
您需要做的就是将 this.GetType()
传递给基础实现中的 XMLSerializer
构造函数。
我正在实现一个 Base 对象 class 来实现 XmlSerializer。
class FN_ObjectBase
{
public object FromXML(string xml)
{
var serializer = new XmlSerializer(typeof("ObjectA??"));
var reader = new XmlTextReader(new StringReader(xml));
var scriptItem = serializer.Deserialize(reader);
return scriptItem;
}
}
class ObjectA : FN_ObjectBase
{
public object = new ObjectA.FromXML("serializedXML");
}
如何正确编写 FromXML 方法以基于派生的对象创建任何对象class?
尝试使用通用方法:
public T FromXML<T>(string xml)
{
var serializer = new XmlSerializer(typeof(T));
var reader = new XmlTextReader(new StringReader(xml));
var scriptItem = serializer.Deserialize(reader);
return (T)scriptItem;
}
称呼它:
FromXML<ObjectA>("serialized xml")
面向对象规则: 切勿在基类型中使用派生类型。
您不需要抽象方法,虽然通用方法实现可以工作,但它向调用者发出略有不同(尽管可能更好)的意图。
您需要做的就是将 this.GetType()
传递给基础实现中的 XMLSerializer
构造函数。