2011-03-30 126 views
0

我正在使用Xml序列化来保存磁盘上的某些对象。XmlInclude属性和派生类

类结构如下:

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是不可序列。有排除类型/类的属性吗?

在此先感谢。

+0

你的意思是你在序列化一个包含混合类型对象列表的属性? – 2011-03-30 14:29:24

+0

@Ondrej:我正在序列化整个类,所以我需要排除CustomBranchExplorerViewInfo类型。 – 2011-03-30 14:34:47

+0

我想你错过了我的观点:我问你使用这些类的地方,在那里要序列化的实例实际存在。请提供更多代码 - 您在哪里使用这些类,以及您实际上序列化的是什么。 – 2011-03-30 14:37:16

回答

2

你在混淆两种完全不同类型的序列化。

一方面你说的是[XmlInclude]这与xml序列化有关。

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

虽然这些都是序列化的两种类型,但它们是非常不同和无关的。

没有任何简单的等价测试“IsXmlSerialization”,我能想到。

+0

谢谢你的回答,我现在明白了。 – 2011-03-30 19:12:53