DTO可以像Clone一样进行基本的对象级操作吗?

时间:2011-09-01 18:43:57

标签: c# dto

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

我目前使用选项#2。但是,如果DTO中没有逻辑,我认为#1是可以接受的。我想看看你们中是否有人遇到类似DTO的情况需要像Clone,ToString这样的基本操作,尤其是具有继承性的DTO。感谢。

2 个答案:

答案 0 :(得分:3)

如果它是DTO,它应该被设计用于序列化 - 在这种情况下,您最好的选择是通过它设计的任何过程来序列化它,并从那里重新补充克隆。这很难成为性能问题。

答案 1 :(得分:2)

克隆是一种不常用的操作。但是,如果您确实需要克隆对象,则直接在对象上实现它是完全可以接受的。这样,您就可以访问与MemberwiseClone

相关的受保护ICloneable功能

经常使用MemberwiseClone实现克隆。请参阅Cannot access protected member 'object.MemberwiseClone()'

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