C#停止一个类进行序列化

时间:2011-05-04 08:27:48

标签: c# xml serialization

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

public class NonControllable{
    Collection children;
}

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

2 个答案:

答案 0 :(得分:4)

由于yoy有[xml]标签,你需要(在父级别):

[XmlIgnore]
public Foo Bar {...}

但是,您无法在类型级别控制此操作。公开成员的类型必须定义它。

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

请注意ISerializable对xml序列化没有影响;你需要IXmlSerializable,这是(IMO)很难实现的。

答案 1 :(得分:1)

只需使用不可序列化的属性标记属性,就不会发生序列化。

参见以下示例;

public class MyClass : NonControllable {

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