C# 在C中从多个文件反序列化对象#

C# 在C中从多个文件反序列化对象#,c#,xml,serialization,C#,Xml,Serialization,是否可以从多个XML文件反序列化单个对象?例如,如果我有以下类: [XmlInclude(typeof(SubClass))] [XmlRoot] public class BaseClass { [XmlElement] public virtual int CommonSetting { get; set; } } [XmlRoot] public class SubClass : BaseClass { [XmlElement] public int Ot

是否可以从多个XML文件反序列化单个对象?例如,如果我有以下类:

[XmlInclude(typeof(SubClass))]
[XmlRoot]
public class BaseClass
{
    [XmlElement]
    public virtual int CommonSetting { get; set; }
}

[XmlRoot]
public class SubClass : BaseClass
{
    [XmlElement]
    public int OtherSetting { get; set; }
}
我想从XML中反序列化“SubClass”的一个实例,但我想将定义拆分为两个不同的文件。例如:

BaseClass.xml

<BaseClass>
    <CommonSetting>10</CommonSetting>
</BaseClass>


SubClass.xml

<SubClass>
    <OtherSetting>5</OtherSetting>
</SubClass>
BaseClass.xml
10
SubClass.xml
5.
其次,是否可以通过在“SubClass.xml”文件中设置继承的“公共”设置来覆盖这些设置。例如,如果我将“SubClass.xml”定义为:

<SubClass>
    <CommonSetting>5</CommonSetting>
    <OtherSetting>5</OtherSetting>
</SubClass>

5.
5.
然后我希望有一个对象“Subclass”,其“CommonSetting”为5,而不是10


上述情况是否可能?如果可能,我该如何着手?目前,我所能实现的就是分别反序列化“基类”和“子类”的实例,并且“子类”对于从“基类”派生的设置具有空/默认值

首先,xml没有继承类所需的类型属性。您可以使用Xmldocument或XDocument手动解析xml文件,这将满足您的需求。导入后,您可以将类属性从10更改为5。听起来您不需要继承(
子类
不应该从
基类
继承)。将每个类序列化为自己的xml(例如,通过使用
XmlSerializer
),以相同的方式反序列化。实际上,“基类”将有许多包含合理默认值的设置在大多数情况下,“子类”将接受这些默认值。它不从“基类”派生是没有意义的。最后,我会两次定义属性。“xml没有继承类所需的类型属性。”-以上只是我试图实现的一个示例。我可以成功地反序列化子类,它只是不包含BaseClass.xml文件中定义的设置值。