【问题标题】:DTO mapper using C# Extension Methods使用 C# 扩展方法的 DTO 映射器
【发布时间】:2011-03-02 14:26:58
【问题描述】:

将 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; 

}

【问题讨论】:

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


    【解决方案1】:

    撇开命名问题不谈,从根本上来说它没有任何问题,它允许在代码所在位置方面提供良好的 SOC,同时仍提供良好的 API。

    也就是说,您应该考虑重命名您的函数。通常,函数是从 target(在本例中为您的 DTO)的角度命名的,而不是从 result 的角度命名的。在您的情况下,我将其命名为 ToAffiliateToBusinessObject(如果您想在 DTO 中使用一致的名称)而不是 FromDataTransferObject

    【讨论】:

    • 我建议 ToEntity() 或 ToDto()
    【解决方案2】:

    我认为它没有问题,它有助于提高可用性和可读性,并且对于手头的任务,它也没有任何副作用。我自己也用过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 2021-08-03
      • 1970-01-01
      • 2017-06-18
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多