我需要阻止一个类被序列化,如果它在一个集合中,因为我无法控制返回集合的父类属性。没有实施ISerializable有没有解决方案?C#阻止类从序列化
public class NonControllable{
Collection children;
}
public class MyClass : NonControllable {
// NEED TO STOP Serializing children property.
}
我需要阻止一个类被序列化,如果它在一个集合中,因为我无法控制返回集合的父类属性。没有实施ISerializable有没有解决方案?C#阻止类从序列化
public class NonControllable{
Collection children;
}
public class MyClass : NonControllable {
// NEED TO STOP Serializing children property.
}
只需使用不可序列化的属性标记该属性,就不会出现序列化。
请看下面的例子;
public class MyClass : NonControllable {
// Property that is not serialized.
[NonSerialized()]
public string myProperty;
}
由于同比有[XML]标签,你会想(在父级别):
[XmlIgnore]
public Foo Bar {...}
但是,你不能在类型级别进行控制。暴露成员的类型必须定义它。
另一种方法是在创建XmlSerializer
时使用XmlAttributeOverrides
。
请注意,ISerializable
对xml序列化没有影响;你需要IXmlSerializable
,这是(IMO)的强大实施的痛苦。
除了问题被标记为[xml] ... – 2011-05-04 08:57:59
NonSerialized和Serializable属性与XML序列化无关 – 2011-05-04 09:18:57
无法使用上述内容,因为该属性已经存在于父类中 – Chandimal 2011-05-04 10:43:30