从Business Object Classes自动生成DataContract类

aut*_*ton 7 c# asp.net json datacontract

我目前正在创建一个.NET C#API.我有很多课程,其中一些课程必须通过REST服务转移JSON.例如,我可能有一个包含大量业务元数据的帐户对象:

public class Account
{
    public ComplicatedClass SomeProperty { get; set; }
    public string SomeOtherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有很多类,还有更多嵌套的类(如ComplicatedClasstype属性所示).为了避免淹没这个业务对象[DataMember]等.将使这个类变得混乱的属性,我想做一个DTOfor JSON:

public class AccountDTOForJSON
{
    [DataMember(Name="someProperty")]
    public ComplicatedClassDTOForJson SomeProperty { get; set; }

    [DataMember(Name="someOtherProperty")]
    public string SomeOtherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,似乎没有任何工具(我可以找到)自动生成这些DataContract类,并且还提供来回传递属性的代码.

当然,我可以手动完成所有这些工作(最坏的情况),或者滚动我自己的工具来生成/映射(第二个更坏的情况).但是,我想首先知道是否已经有一种工具来做这种事我可以用来节省自己的时间.

the*_*yer 2

这是一个很好的问题。实际上,我将在我正在从事的项目中做类似的事情。

我认为这里确实存在两个问题:第一是从业务对象生成 DTO 代码,第二是在业务对象和 DTO 之间进行映射。

在 Google 上花了大约半小时后,我找不到用于此目的的代码生成器。也许我没有在寻找正确的东西,或者可能没有这样的东西(所以如果有人知道,请插话)。我发现唯一看起来有前途的工具是 NHydrate ( http://www.codeproject.com/Articles/42885/NHydrate-Code-Generator ),但我实际上并没有下载或测试它。

我过去使用过的映射工具是 AutoMapper ( https://github.com/AutoMapper/AutoMapper/wiki/Getting-started ) - 它将尝试找出业务对象和 DTO 之间的关系,并将能够进行双向映射。