1)我想知道创建&的推荐方法是什么?为具有10个属性的对象返回DTO,我只想用我的DTO对象返回2。
2)DTO应该拥有自己的命名空间吗?如果是,我们如何组织它们?单个类文件中的每个DTO或单个类中的所有DTO?
请提供一些示例代码。
答案 0 :(得分:11)
DTO是由公共getter / setter组成的愚蠢对象。我通常将它们放在一个名为SomeProject.Dto的单独命名空间中。
public class CustomerDto {
public int Id { get; set; }
public string Name { get; set; }
public LocationDto HomeAddress { get; set; }
}
我通常会尝试在DTO和相应的域类之间保持属性名称相同,可能会有一些展平。例如,我的客户可能有一个Address对象,但我的DTO可能会被展平为:
public class CustomerDto {
public int Id { get; set; }
public string Name { get; set; }
public string HomeStreet { get; set; }
public string HomeCity { get; set; }
public string HomeProvince { get; set; }
public string HomeCountry { get; set; }
public string HomePostalCode { get; set; }
}
使用Jimmy Bogard的AutoMapper,您可以大大减少将域对象翻译成DTO的重复映射代码量。
答案 1 :(得分:1)
你的问题非常开放。答案取决于您的申请规模。
通常我会在自己的程序集中创建DTO或ViewModel。为了得到我的DTO,我有一些服务层负责根据我的要求创建它们。
如果你想要具体的例子,请看一下asp.net上的一些Asp.NET MVC示例。虽然您可能没有使用MVC,但至少可以看到ViewModel是如何创建的。