c# - 序列化派生类时如何让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;
}
}
当 MyDerived 的实例使用 Json 的 Data Contract Serializer 进行序列化时,它的工作方式完全符合我的预期。序列化的 Json 恰好有一个名为“Type”的属性,它保存了以我需要的方式转换的值。
但是,当使用 XML 的 Data Contract Serializer 序列化 MyDerived 的实例时,它会稍微复杂一些。生成的 xml 有两个名为“Type”的元素,一个具有命名空间“http://someone-else.com/DataContracts/Shared/Stuff/”,另一个没有指定命名空间。我想获得序列化的xml,它在命名空间上没有“Type”的基类元素,只是派生类。
这可能吗?如何?
解决方案
推荐阅读
- python - 用 Python 循环文件名
- javascript - 尝试做how-to-npm 练习,但没有找到目录
- angular8 - Angular 8 RouterLink 将页面作为一个整体打开,而不是将其放置在路由器插座内
- akka.net - 在不阻止父演员的情况下管道询问
- docker - 每次docker-compose时如何让docker拉最新版本
- android - 如何使android材料设计与android 4兼容
- angular - 角度形式的异步与同步
- google-sheets - 如何在 Google 表格中使用 ArrayFormula 计算总数和唯一性(基于 2 个单独的列)?
- reactjs - 如何更新 React setState() 方法中的列表?
- angular - 如何将 Ion Slide 设置为仅由 FIRST TIME 用户查看一次?