c# - 使用 c# 将嵌套模型对象复制到 DTO 对象
问题描述
我想将数据对象复制到嵌套相同类型的数据传输对象。
C#
public class Data
{
public int Id { get; set; }
public string SomeInfo { get; set; }
public virtual ICollection<Data> Data { get; set; }
}
public class DTOData
{
public int Id { get; set; }
public string SomeInfo { get; set; }
public virtual ICollection<DTOData> Data { get; set; }
}
List<Data> data = new List<Data>();
data.Add(new Data(){Id =1, SomeInfo = 'sometext' });
List<DTOData> dtoData = new List<DTOData>();
dtoData.Add(new DTOData(){Id =10, SomeInfo = 'sometext2' });
我想将数据对象复制到 DTOData(数据传输对象)。
我的方法
dtoData = (DTOData) data;
但它抛出类型不匹配的异常。如何将数据对象复制到 DTOData 对象,主要的复杂性在于它具有嵌套的自引用。请帮忙。
解决方案
如果您不关心性能,这可能是一个解决方案,使用 json 和 newtonsoft 将其序列化和反序列化为新类型,例如:
dtoData = JsonConvert.DeserializeObject<DTOData>(JsonConvert.SerializeObject(data));
对于列表对象:
dtoData = JsonConvert.DeserializeObject<List<DTOData>>(JsonConvert.SerializeObject(data));
推荐阅读
- python - 如何将 tkinter 文本文件保存为图像(.png)?
- if-statement - 根据编辑器为单元格着色
- kubernetes - 在继承的 Helm 图表中使用变量 Chart.Name
- javascript - 在父页面中创建一个函数,当点击 iframe 内的按钮时触发
- vue.js - 如何将检索到的数据从 v-for 绑定到 Vuejs 中的数据对象?
- python-3.x - AttributeError:模块“m5”没有属性“main”
- python - 为什么 asyncio.sleep() 会导致“将 Future 附加到不同的循环”?
- html - 这个双内滚动表只能用 CSS 完成吗?
- c# - PropertyValidator 的自定义客户端验证问题
- node.js - 如何制作一个路由文件并将其导入引导文件Nodejs