XmlInclude属性和派生类

时间:2011-03-30 14:25:30

标签: c# .net serialization xml-serialization

我正在使用Xml序列化来保存磁盘上的某些对象。

类结构如下:

XmlInclude(typeof(BranchExplorerViewInfo))
public class ViewInfo
{
   ...
}

public class BranchExplorerViewInfo : ViewInfo
{
   ...
}

public class CustomBranchExplorerViewInfo: BranchExplorerViewInfo
{
   ...
}

然后,我需要以下行为:

BranchExplorerViewInfo view = new BranchExplorerViewInfo();
view.GetType().IsSerializable; //I need this to be TRUE

CustomBranchExplorerViewInfo customView = new CustomBranchExplorerViewInfo();
customView.GetType().IsSerializable; //I need this to be FALSE

因此,我希望BranchExplorerViewInfo可序列化,但CustomBranchExplorerViewInfo不可序列化。是否有任何属性可以排除类型/类?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您混淆了两种完全不同类型的序列化。

一方面,您在讨论与{xml序列化相关的[XmlInclude]

另一方面,您正在测试Type.IsSerializable,它与二进制序列化有关(即与[Serializable]属性和BinaryFormatter类相关)。

虽然这些都是序列化的类型,但它们是非常不同且不相关的。

我无法想到“IsXmlSerialization”的简单等效测试。