将 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)的角度命名的,而不是从结果的角度命名的。就您而言,我会将其命名为 ToAffiliate
或 ToBusinessObject
(如果您希望在 DTO 中具有一致的名称),而不是 FromDataTransferObject
。
关于c#-4.0 - 使用 C# 扩展方法的 DTO 映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168832/