|
|
1
13
我一般会说 不 它们不应该,因为DTO是特定于服务或应用程序的,而域模型是您的“最内层”层,不应该有依赖性。DTO是一个实现细节 其他 而不是领域模型,因此,它打破了领域模型了解它们的抽象。 你考虑过看吗 AutoMapper 为了这个?你这样写的代码会少得多。在这种情况下,我认为你可以简单地摆脱:
稍后:
这不仅减少了代码搅乱,而且将映射代码划分为自己的“映射层”——您有一个或多个模块来注册这些映射,您可以将这些映射放入真正使用DTO的任何程序集中。 当然,您可以始终创建扩展方法来简化实际映射:
这使得整件事像写作一样简单
如果您正在创建这些依赖项,因为您正在尝试创建
如果你决定三个月后你需要一种不同的DTO呢?您不应该修改以域为中心的
|
|
|
2
4
我通常这样做:业务对象在业务层DLL中是“纯”的。然后在wcf层中添加camera.maptocameradatacontract扩展方法。我还典型地在服务层上有反向扩展方法(cameradatacontract.maptocamera)。 所以本质上,我是第一种方法,但是todata方法是一种扩展方法,只有wcf层知道。 |
|
3
0
第一个(暴露DTO)比我好得多。它更简单,运行速度更快,更容易理解和维护。由于DTO确实不依赖于数据库对象,因此它仍然很容易实现减少依赖性的目标。 |
|
|
4
0
我把to/from方法放在DTO上:
这样我的域对象就不必知道我的DTO了。 |
|
|
5
0
您的服务是WCF到WCF吗? 如果是,那么您可以选择将业务对象用作DTO(只要您的业务对象没有持久性)。如果您这样做了,我建议您将cameradata类更改为icameradata接口,并使cameradata实现icameradata。保留接口上的属性(DataContract等)。 然后您可以将业务对象从客户机传递到服务器。注意任何特定于客户机或服务器端的逻辑。 我的第一张照片 blog post 这里显示了重新使用Business Objects对象客户端的容易程度(对话框是在执行“添加服务引用”时显示的对话框)。博客上有一些关于重新使用biz对象的信息。 我不知道你想用ExposeToReporter实现什么,但是你是对的,它看起来不正确,我个人会在iReporter上放置一个方法,它采用一个iMeradata参数,然后在其中设置Reporter的详细信息。 学习这些东西的一个很好的来源是 dnrtv . 观看所有与世界自然基金会在标题,但特别是极端世界自然基金会米盖尔卡斯特罗! |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |