DTO能像克隆一样有基本的对象级操作吗?

本文关键字:对象 操作 一样 DTO | 更新日期: 2023-09-27 18:07:20

我理解DTO的严格定义是作为传输数据的容器,它不应该有任何行为。但是,我遇到了需要克隆DTO的情况,有两种选择:1. 在DTO中创建一个Clone方法(iclonable ?2. 创建通用实用程序类来克隆DTO

我目前使用选项#2。然而,如果DTO中没有逻辑,我认为第1条是可以接受的。我想知道你们中是否有人遇到过类似的DTO情况,需要像Clone, ToString这样的基本操作,特别是有继承的DTO。谢谢。

DTO能像克隆一样有基本的对象级操作吗?

如果它是一个DTO,它应该被设计为序列化——在这种情况下,您最好的选择是通过它被设计的任何进程序列化它,并从那里重新生成一个克隆。这是非常罕见的性能问题。

克隆是一个不太常用的操作。但是,如果您确实需要克隆对象,那么直接在对象上实现是完全可以接受的。这将允许您访问与ICloneable相关的受保护的MemberwiseClone特性

克隆通常使用MemberwiseClone实现。参见object.MemberwiseClone()'.

如果需要深度图克隆,请查看BinaryFormatter来克隆对象。或者考虑更改模型以避免克隆。