我们正在从XML序列化/反序列化类,但是类中有我们想要排除的属性和字段。
System.NonSerialized和System.Xml.Serialization.XmlIgnore属性似乎是起作用的,但它们之间有什么区别呢?似乎我们可以在类的属性或字段上使用XmlIgnore。但是NonSerialized只能在字段中使用。是否有任何理由不使用XmlIgnore在每一种情况下,如果是的话,NonSerialized属性的目的是什么,为什么在用法上有差异?
这是允许的:
<System.NonSerialized()> _
Public Foo As String这是允许的:
<System.Xml.Serialization.XmlIgnore()> _
Public Foo As String这是允许的:
<System.Xml.Serialization.XmlIgnore()> _
Public Property Bar() As String
Get
Return _Bar
End Get
Set(ByVal value As String)
_Bar = value
End Set
End Property但这是不允许的:
<System.NonSerialized()> _
Public Property Bar() As String
Get
Return _Bar
End Get
Set(ByVal value As String)
_Bar = value
End Set
End Property发布于 2010-02-05 12:01:32
NonSerialized适用于比XML更多的序列化类型。如果要序列化为二进制或SOAP,则使用NonSerialized;如果使用XmlSerializer严格地将XML序列化为XML,则使用XmlSerializer。请参阅MSDN上NonSerializedAttribute类的备注部分。
https://stackoverflow.com/questions/2201658
复制相似问题