c# - 从业务对象类自动生成 DataContract 类

标签 c# asp.net json datacontract

我目前正在创建 .NET C# API。我有很多类,其中一些类必须通过 REST 服务作为 JSON 进行传输。例如,我可能有一个包含大量业务元数据的帐户对象:

public class Account
{
    public ComplicatedClass SomeProperty { get; set; }
    public string SomeOtherProperty { get; set; }
}

有很多类,还有很多是嵌套的(如 ComplicatedClass 类型属性所示)。为了避免用 [DataMember] 等属性淹没这个业务对象,这会使这个类变得一团糟,我想为 JSON 创建一个 DTO >:

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

    [DataMember(Name="someOtherProperty")]
    public string SomeOtherProperty { get; set; }
}

我的问题是,似乎没有任何工具(我能找到)来自动生成这些 DataContract 类,也没有提供用于来回映射属性的代码。

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

最佳答案

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

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

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

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

关于c# - 从业务对象类自动生成 DataContract 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14652487/

相关文章:

c# - 需要更快地实现 Image.FromStream 以实时显示图像

c# - 无法从 'method group' 转换为 'Func<string, string, bool>'

asp.net - 自动文本框宽度

c# - 嵌套母版页和 CSS 文件

.net - 如何在 Controller 中为 Json 呈现部分 View

php - 不显示 JSON 输出

c# - 与异常传播同步运行异步任务

c# - StreamWriter 什么时候被释放?

c# - GridView 中的验证不适用于 EditItemTemplate 中的 TextBox

java - 从 Gson 到 MongoDB 对象的转换器