C#序列化-忽略父类的属性
将子类序列化为XML时是否可以忽略父类的属性?如果可能的话,我也希望使用JSON实现这一点,但是如果可行的话,我希望先使用xml 例如,如果我有这样一个基类:C#序列化-忽略父类的属性,c#,xml,serialization,asp.net-web-api,C#,Xml,Serialization,Asp.net Web Api,将子类序列化为XML时是否可以忽略父类的属性?如果可能的话,我也希望使用JSON实现这一点,但是如果可行的话,我希望先使用xml 例如,如果我有这样一个基类: [Serializable] [DataContract] public abstract class BaseClass { protected string _correlationID; private bool _isValid; /// <s
[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; }
}
}
[可序列化]
[数据合同]
公共抽象类基类
{
受保护字符串_correlationID;
私有布尔值是有效的;
///
///获取/设置相关id
///
[数据成员]
公共虚拟字符串CorrelationID
{
获取{return\u correlationID;}
设置{u correlationID=value;}
}
///
///获取/设置为有效
///
[数据成员]
公共虚拟bool是有效的
{
获取{return\u isValid;}
设置{u 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; }
}
}
[可序列化]
[数据合同]
公共类MyClass:基类
{
私有int_objectId;
私有字符串_objectName;
///
///获取/设置对象id
///
[数据成员]
公共int对象
{
获取{return\u objectId;}
设置{u objectId=value;}
}
///
///获取/设置对象名称
///
[数据成员]
公共int对象名
{
获取{return\u objectName;}
设置{u objectName=value;}
}
[XmlIgnore]
公共重写字符串CorrelationID
{
获取{return\u correlationID;}
设置{u correlationID=value;}
}
}
我希望xml返回为:
<MyClass>
<IsValid>true</IsValid>
<ObjectId>5</ObjectId>
<ObjectName>My Object</ObjectName>
</MyClass>
真的
5.
我的目标
但是,如果我尝试覆盖虚拟属性并向其添加xml ignore属性,则xml将被删除,就像我没有指定和属性一样:
<MyClass>
<CorrelationID>12345678910</CorrelationID>
<IsValid>true</IsValid>
<ObjectId>5</ObjectId>
<ObjectName>My Object</ObjectName>
</MyClass>
12345678910
真的
5.
我的目标
我也尝试过使用[IgnoreDataMember],但结果是一样的
我正试图在MVC/WebAPI中这样做,但如果可能的话,我希望它也适用于WCF
任何方向都会有帮助。提前谢谢。可能的重复肯定的重复。作文而不是继承。谢谢,在回到这篇文章之前,我最终换了一个不同层次的作文。在我的搜索中,我找不到这两个问题。