基 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 构造函数。