C# 不带[XMLInclude]或类型[]构造函数的抽象类的序列化
我不确定这是否可行,但基本上我在NameSpace1[assembly1]中有一个抽象类,在Namespace2[assembly2]中有一个派生类。命名空间1[assembly1]被命名空间2[assembly2]引用 现在,我想在从assembly3[仅引用assembly1]创建派生类的对象之后序列化抽象类 我在谷歌上搜索发现,我需要指定[XMLInclude]属性,或者在XMLSerializer构造函数中以ExtraTypes的形式提供类型。我的项目的当前结构不允许我实现这一点,没有这两种方法中的任何一种可以实现序列化吗C# 不带[XMLInclude]或类型[]构造函数的抽象类的序列化,c#,xml,serialization,C#,Xml,Serialization,我不确定这是否可行,但基本上我在NameSpace1[assembly1]中有一个抽象类,在Namespace2[assembly2]中有一个派生类。命名空间1[assembly1]被命名空间2[assembly2]引用 现在,我想在从assembly3[仅引用assembly1]创建派生类的对象之后序列化抽象类 我在谷歌上搜索发现,我需要指定[XMLInclude]属性,或者在XMLSerializer构造函数中以ExtraTypes的形式提供类型。我的项目的当前结构不允许我实现这一点,没有这
谢谢总的来说这是可能的 对于这个用例,您可以使用IXmlSerializable实现。在序列化时,您可以将对象的类型作为字符串写入xml以及对象、属性等
对于反序列化,您可以从xml读回类型并使用Activator.CreateInstance。。。重新创建类型。好的实现IXmlSerializable对于这么多属性来说简直是疯了。讨厌这么说,但还有其他解决方案吗?@SparshGupta这取决于你必须序列化的类,以及你将来必须提供或不提供的兼容性。我更喜欢IXmlSerializable实现,因为对我来说,将来更容易扩展/维护和更改行为。感谢@user1341210,只是为了确保我需要在基类中实现IXmlSerializable,对吗?@SparshGupta是的,通常在基类中实现它。如果您需要序列化其他内容,您的真实对象类可以覆盖它,或者您可以创建一些可以选择性覆盖的虚拟写/读xml方法来扩展序列化行为。