在我的项目中,我在班级A
中使用了外部数据结构MyClass
。我想用DataContracts将我的班级序列化如下:
[DataContract(Namespace = "http://www.my-url.com")]
public class MyClass {
[DataMember]
private A _a;
...
}
我遇到的问题是,外部数据结构A
不支持使用DataContracts进行序列化。因此,我的应用程序在尝试序列化类字段_a
时崩溃。
由于数据结构A
是外部的,因此我无法更改它。是否仍然可以以某种方式解决这个问题?
答案 0 :(得分:2)
不幸的是,看起来你必须创建一些包含序列化属性的包装类。您应该复制值,或者通过调用A的属性的内部值来公开值。您可以使用AutoMapper(https://github.com/AutoMapper/AutoMapper)将值从一个实例复制到另一个实例。
答案 1 :(得分:1)
由于数据结构A是外部的,因此我无法更改它。
完全。由于您无法更改现有的外部数据结构,因此您应该将数据映射到您自己的,可序列化的DTO,也可以使用AutoMapper之类的内容,或者为A
创建包装器它调用现有对象的属性。
我认为你应该这样做,因为它可以让你,而不是外部库,控制线路上的内容,以及它的结构/格式。