我有一個有大約20個成員的類。我需要使用XML序列化這個類的對象。但條件是我只需要XML中的一個成員。只能序列化一個類的一個屬性
我該怎麼做。
編輯:但在某個時候,我想序列化所有的成員。所以我不能使用[XMLIgnore]屬性。
我有一個有大約20個成員的類。我需要使用XML序列化這個類的對象。但條件是我只需要XML中的一個成員。只能序列化一個類的一個屬性
我該怎麼做。
編輯:但在某個時候,我想序列化所有的成員。所以我不能使用[XMLIgnore]屬性。
您可以將[XmlIgnore]屬性放在不想被序列化的所有成員上。
添加以下的屬性對所有你不想序列化的成員,
[XmlIgnore()]
public Type X
{
get;set;
}
標記其他屬性
<NonSerializable()> _
Property someproperty
高端物業
有兩種方法可以使在.NET中使用屬性不可序列化的屬性。
如果您在二進制或SOAP序列化,你應該使用[NonSerialized]
您可以設置屬性[NonSerialized]
或[XmlIgnore]
,如果你想序列只是在XML你應該使用[XmlIgnore]
。
所以你的情況,答案是[XmlIgnore]
編輯: 沒有辦法動態地應用屬性的屬性。 這裏關於這裏的一些信息:Can attributes be added dynamically in C#?這裏Remove C# attribute of a property dynamically
另外,作爲一個鍛鍊你可能有不同的屬性類的不同副本。
OR
讓你的類的副本設置所有的道具爲可序列化,但填充只有你需要的屬性,這樣一來其他每一件事將是空/空和類的序列後,你應該得到你所需要的XML 。
你可以明確地實現IXmlSerializable
接口和控制領域的自己的讀/寫,基於某些外部參數,即
class CustomXml: IXmlSerializable
{
public System.Xml.Schema.XmlSchema GetSchema()
{
//
}
public void ReadXml(System.Xml.XmlReader reader)
{
if (SerializationParameter.FullSerialization)
//deserialize everything
else
//deserialize one field only
}
public void WriteXml(System.Xml.XmlWriter writer)
{
if (SerializationParameter.FullSerialization)
//serialize everything
else
//serialize one field only
}
}
其中SerializationParameter.FullSerialization
是你如何能控制的例子是什麼序列化時。
請參閱編輯請 – 2011-01-19 11:42:38