c#-4.0 - 使用 C# 扩展方法的 DTO 映射器

标签 c#-4.0 c#-3.0 domain-driven-design extension-methods dto

将 DTO 映射器(大多数时候是静态类)的成员定义为扩展方法是个好主意吗?

然后不要写:

Affiliate bo = Mapper.FromDataTransferObject(dto);

我们可以写:

Affiliate bo = dto.FromDataTransferObject();

FromDataTransferObject 是定义如下的扩展方法:

public static Affiliate FromDataTransferObject(this AffiliateDto dto) {

if (dto == null) {
    return null;
}

var bo = new Affiliate() {
    Id           = dto.Id,
    AccountAlias = dto.AccountAlias,
    Balance      = dto.Balance
    // ...
};

return bo; 

}

最佳答案

除了命名问题之外,它没有什么根本性的错误,并且它在代码所在的位置方面提供了良好的 SOC,同时仍然提供了良好的 API。

也就是说,您应该考虑重命名您的函数。通常,函数是从目标(在本例中为您的 DTO)的角度命名的,而不是从结果的角度命名的。就您而言,我会将其命名为 ToAffiliateToBusinessObject(如果您希望在 DTO 中具有一致的名称),而不是 FromDataTransferObject

关于c#-4.0 - 使用 C# 扩展方法的 DTO 映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168832/

相关文章:

c# - Generic 类型参数前的 "out"是什么意思?

web-services - 从 CQRS 访问 Web 服务

asp.net-mvc - 为什么 MVC Post (ViewModel) 不会使用异步返回更新后的表单?

C# .Net 4.0 命名参数和默认参数

linq-to-sql - LINQ to SQL 实体和数据上下文类 : business object encapsulation

c# - DDD : entities mapped to tables with lots of databse columns

c# - 如何为其中一个是事件项目的项目集合建模?

c# - 使用 HTML Agility Pack 获取图像旁边的文本?

wpf - .ico 中的图像作为 DynamicResource

c# - 匿名泛型——我应该在哪里使用它?