C# 阻止类序列化

C# 阻止类序列化,c#,xml,serialization,C#,Xml,Serialization,如果类在集合中,我需要阻止它被序列化,因为我无法控制返回集合的父类属性。如果不实现ISerializable,有什么解决方案吗 public class NonControllable{ Collection children; } public class MyClass : NonControllable { // NEED TO STOP Serializing children property. } 只需将属性标记为不可序列化的属性,序列化就不会发生 参见下面的示例

如果类在集合中,我需要阻止它被序列化,因为我无法控制返回集合的父类属性。如果不实现ISerializable,有什么解决方案吗

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; 
}

只需将属性标记为不可序列化的属性,序列化就不会发生

参见下面的示例

public class MyClass : NonControllable {

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

由于您有[xml]标记,因此您希望在父级:

[XmlIgnore]
public Foo Bar {...}
但是,您无法在类型级别控制此操作。公开成员的类型必须定义它

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


注意,ISerializable对xml序列化没有影响;您需要IXmlSerializable,这是一个很难实现的问题。

因为您有[xml]标记,所以您希望在父级:

[XmlIgnore]
public Foo Bar {...}
但是,您无法在类型级别控制此操作。公开成员的类型必须定义它

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


注意,ISerializable对xml序列化没有影响;您需要IXmlSerializable,这是一个很难实现的问题。

非序列化和可序列化属性与XML序列化无关无法使用上述属性,因为父类中已存在属性。非序列化和可序列化属性与XML序列化无关无法使用上述属性,因为属性已存在在父类中