问题描述
我有一个可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 (将#修改为@)