Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#序列化-忽略父类的属性_C#_Xml_Serialization_Asp.net Web Api - Fatal编程技术网

C#序列化-忽略父类的属性

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

将子类序列化为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; }
        }
    }
[可序列化]
[数据合同]
公共抽象类基类
{
受保护字符串_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


任何方向都会有帮助。提前谢谢。

可能的重复肯定的重复。作文而不是继承。谢谢,在回到这篇文章之前,我最终换了一个不同层次的作文。在我的搜索中,我找不到这两个问题。