如果一个类在一个集合中,我需要阻止它被序列化,因为我无法控制返回该集合的父类属性。没有实现ISerializable是否有任何解决方案?
public class NonControllable{
Collection children;
}
public class MyClass : NonControllable {
// NEED TO STOP Serializing children property.
}
答案 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;
}