将子类序列化为XML时是否可以忽略父类的属性?如果可能的话,我也想用JSON做这个,但是如果可行的话,我希望xml先工作。
例如,如果我有这样的基类:
[Serializable]
[DataContract]
public abstract class BaseClass
{
protected string _correlationID;
private bool _isValid;
/// <summary>
/// get/set the correlation id
/// </summary>
[DataMember]
public virtual string CorrelationID
{
get{ return _correlationID; }
set{ _correlationID = value; }
}
/// <summary>
/// get/set IsValid
/// </summary>
[DataMember]
public virtual bool IsValid
{
get { return _isValid; }
set { _isValid = value; }
}
}
和这样的子课
[Serializable]
[DataContract]
public class MyClass : BaseClass
{
private int _objectId;
private string _objectName;
/// <summary>
/// get/set the object id
/// </summary>
[DataMember]
public int ObjectId
{
get { return _objectId; }
set { _objectId = value; }
}
/// <summary>
/// get/set the object name
/// </summary>
[DataMember]
public int ObjectName
{
get { return _objectName; }
set { _objectName = value; }
}
[XmlIgnore]
public override string CorrelationID
{
get{ return _correlationID; }
set{ _correlationID = value; }
}
}
我希望将xml返回为:
<MyClass>
<IsValid>true</IsValid>
<ObjectId>5</ObjectId>
<ObjectName>My Object</ObjectName>
</MyClass>
但是,如果我尝试覆盖虚拟属性并向其添加xml ignore属性,则xml就像我没有指定和属性一样:
<MyClass>
<CorrelationID>12345678910</CorrelationID>
<IsValid>true</IsValid>
<ObjectId>5</ObjectId>
<ObjectName>My Object</ObjectName>
</MyClass>
我也尝试过使用[IgnoreDataMember],但结果却是一样的。
我试图在MVC / Web API中启动它,但我希望它也适用于WCF。如果可能的话。
任何方向都会有所帮助。提前谢谢。