我正在编写WCF服务,我想使用DataTransferObjects,它基本上克隆了类的所有字段。例如我有一堂课Person
class Person
{
public int Id;
public string Name;
public Person()
{
//Some complex stuff here
}
}
class PersonDTO
{
//Copy all public fields and properties of Person
public int Id;
public string Name;
}
有没有一种方法可以基于其他类生成DTO类?一个代码片段或类似的东西?
我不是要复制字段的值。我想生成一个与“父母”类具有相同字段的类。但是我不想继承我的DTO类
您可以使用T4模板从您的实体生成DTO。这是文章使用T4进行代码生成,DTO实体示例,该示例附加了用于从实体生成DTO的示例项目。
主要思想是提供与实体组装的路径:
var entitiesAssembly = @"bin\Debug\EntitiesToDTO.dll";
然后从该程序集中获取所有实体类型:
var typesToRegister =
from t in LoadProjectAssembly(entitiesAssembly).GetExportedTypes()
where t.Namespace == entitiesNamespace && t.IsClass && !t.IsAbstract
select t;
并循环处理它们:
<#
foreach (var type in typesToRegister.Where(t => t.IsClass && !t.IsAbstract))
{#>
[DataContract(Name="<#= ConvertToCamelCase(type.Name) #>]
public partial class <#= GetDTOClassName(type.Name) #>
{
<# foreach (var property in type.GetProperties())
{#>
// analyze property type
// and generate appropriate DataMember property
<#}#>
}
<#}#>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句