如何序列化外部数据结构

本文关键字:数据结构 外部 序列化 | 更新日期: 2023-09-27 18:11:20

在我的项目中,我在我的类MyClass中使用外部数据结构A。我想用数据合约序列化我的类,如下所示:

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

我面临的问题是,外部数据结构A不支持与DataContracts序列化。因此,当尝试序列化类字段_a时,我的应用程序崩溃了。

由于数据结构A是外部的,我没有办法改变它。是否仍有可能以某种方式解决这个问题?

如何序列化外部数据结构

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

由于数据结构A是外部的,我没有办法改变它。

。因为你不能改变现有的外部数据结构,你应该将数据映射到你自己的,可序列化的DTO,可能使用像AutoMapper这样的东西,或者为A创建一个包装器,调用现有对象的属性。

我认为无论如何都应该这样做,因为与外部库相反,它可以让您控制通过网络传递的内容,以及它的结构/格式。