如何序列化外部数据结构?

时间:2014-07-03 10:44:29

标签: c# serialization

在我的项目中,我在班级A中使用了外部数据结构MyClass。我想用DataContracts将我的班级序列化如下:

[DataContract(Namespace = "http://www.my-url.com")]
public class MyClass {
  [DataMember]
  private A _a;
  ...
}

我遇到的问题是,外部数据结构A不支持使用DataContracts进行序列化。因此,我的应用程序在尝试序列化类字段_a时崩溃。

由于数据结构A是外部的,因此我无法更改它。是否仍然可以以某种方式解决这个问题?

2 个答案:

答案 0 :(得分:2)

不幸的是,看起来你必须创建一些包含序列化属性的包装类。您应该复制值,或者通过调用A的属性的内部值来公开值。您可以使用AutoMapper(https://github.com/AutoMapper/AutoMapper)将值从一个实例复制到另一个实例。

答案 1 :(得分:1)

  

由于数据结构A是外部的,因此我无法更改它。

完全。由于您无法更改现有的外部数据结构,因此您应该将数据映射到您自己的,可序列化的DTO,也可以使用AutoMapper之类的内容,或者为A创建包装器它调用现有对象的属性。

我认为你应该这样做,因为它可以让你,而不是外部库,控制线路上的内容,以及它的结构/格式。