2011-03-30 431 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