我在基地有一個absract屬性,被2個派生類覆蓋。我想被序列化的屬性爲其中之一,而不是其他:使用DataContractSerializer序列化覆蓋屬性
[Serializable]
[DataContract(IsReference = true)]
public abstract class Component
{
public abstract bool IsSelected { get; set; }
}
[Serializable]
[DataContract]
public class Leaf : Component
{
[DataMember]
public override bool IsSelected { get; set; } // serialized
}
[Serializable]
[DataContract]
public class Composite : Component
{
private List<Component> componentList = new List<Component>();
/// <summary>
/// Should *not* be serialized
/// </summary>
public override bool IsSelected
{
get
{
foreach (Component component in componentList)
{
if (!component.IsSelected)
return false;
}
return true;
}
set
{
foreach (Component component in componentList)
component.IsSelected = value;
}
}
}
我想放置在葉的的[數據成員]屬性「IsSelected」屬性就足夠了,但顯然,連葉的屬性序列化。
謝謝!
你爲什麼要應用serializable和datacontract? –