2011-05-04 67 views
1

我需要阻止一个类被序列化,如果它在一个集合中,因为我无法控制返回集合的父类属性。没有实施ISerializable有没有解决方案?C#阻止类从序列化

public class NonControllable{ 
    Collection children; 
} 

public class MyClass : NonControllable { 
    // NEED TO STOP Serializing children property. 
} 

回答

1

只需使用不可序列化的属性标记该属性,就不会出现序列化。

请看下面的例子;

public class MyClass : NonControllable { 

    // Property that is not serialized. 
    [NonSerialized()] 
    public string myProperty; 
} 
+0

除了问题被标记为[xml] ... – 2011-05-04 08:57:59

+0

NonSerialized和Serializable属性与XML序列化无关 – 2011-05-04 09:18:57

+0

无法使用上述内容,因为该属性已经存在于父类中 – Chandimal 2011-05-04 10:43:30

4

由于同比有[XML]标签,你会想(在父级别):

[XmlIgnore] 
public Foo Bar {...} 

但是,你不能在类型级别进行控制。暴露成员的类型必须定义它。

另一种方法是在创建XmlSerializer时使用XmlAttributeOverrides

请注意,ISerializable对xml序列化没有影响;你需要IXmlSerializable,这是(IMO)的强大实施的痛苦。