将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;
}
答案 0 :(得分:3)
除了命名问题之外,它没有任何根本性的错误,并且它在代码所在的位置允许良好的SOC,同时仍然提供良好的API。
那就是说,你应该考虑重命名你的功能。通常,函数是从目标(在本例中为您的DTO)的角度命名的,而不是从结果的角度命名。在您的情况下,我会将其命名为ToAffiliate
或ToBusinessObject
(如果您希望在DTO中使用一致的名称),而不是FromDataTransferObject
。
答案 1 :(得分:1)
我没有看到它的问题,它有助于可用性和可读性,并且手头的任务也没有任何副作用。我自己也用过它。