序列化派生类时如何获取xml数据协定序列化程序以忽略基类属性

问题描述

我有一个可xml序列化的基类,并用[DataContract]装饰。它不是我的,我无法更改。

我有一个属于我的派生类。我想在派生类的基类中重写一个属性。基类中的该属性用[DataMember]装饰。

(在原理上)看起来像这样:

[Serializable]
[DataContract(Namespace="http://someone-else.com/DataContracts/Shared/Stuff/")]
public class SomeoneElseBase
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Type { get; set; }
}

[Serializable]
[DataContract]
public class MyDerived: SomeoneElseBase
{
    [DataMember]
    public new string Type
    {
        get => MyTransformMethod(base.Type);
        set => base.Type = value;
    }
}

当使用Data Contract Serializer for Json对MyDerived的实例进行序列化时,它的工作原理与我预期的完全一样。序列化的Json恰好具有一个名为“ Type”的属性,并且它具有按我需要的方式转换的值。

但是,当使用Data Contract Serializer for XML对MyDerived的实例进行序列化时,会稍微复杂一些。生成的xml具有两个名为“ Type”的元素,一个具有名称空间“ http://someone-else.com/DataContracts/Shared/Stuff/”,一个没有指定名称空间。我想获取序列化的xml,该xml在命名空间上没有“类型”的基类元素,而只是派生类。

这可能吗?怎么样?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)