我想知道什么是设计DTO对象的构造函数的最佳做法。C#Dto构造函数和依赖注入
说,我有一个DTO对象是这样的:
class CustomerDto
{
public string Name { get; set; }
public string Surname { get; set; }
public string Phone { get; set; }
...
}
有几种方法来构造对象:当你看到这
public CustomerDto(string name, string surname, string phone, ...)
{
this.Name = name;
this.Surname = surname;
this.Phone = phone;
...
}
:
我可以声明构造构造函数并立即结束SRP(单个责任)违规?
即使这些属性都是相关的。
人们也可能会认为没有必要验证属性,因为这是一个DTO并且没有任何行为,行为应该位于此映射的域对象上。
在C#中,我们还可以更优雅的构造这个对象:
var dto = new CustomerDto()
{
Name = "Some name",
Surname = "Some surname"
}
或者用一口流利的建设者或如NBuilder的框架。
Automapper也有自动映射框架的用法。问题还在于使用Ioc容器,Ctor变得复杂,以及交换参数的风险,例如,如果您姓氏在哪里传递,反之亦然,验证可能会错过这个更容易,然后显式映射,如上所述。
请帮助说服我哪一种更好的方法。
[依赖注入 - 使用数据传输对象(DTO)?](http:// stackoverflow。com/questions/6297322/dependency-injection-use-with-data-transfer-objects-dtos) –
我遇到了同样的问题,并决定不使用构造函数。出于一个简单的原因:稍后,在一个月或6几个月,我或其他人会看这个,并且必须以我自己(和你自己)现在所想的方式思考它。我发现在阅读代码的过程中思考它太复杂了。 – dferraro