是否有任何框架或实用程序(在 .NET 空间中)用于从业务对象自动生成数据传输对象

StackOverflow https://stackoverflow.com/questions/2414312

我正在寻找使用一组约定(例如,从业务对象(类型定义,而不是映射数据)生成数据传输对象的最佳方法)所有公共属性),并且可能可以配置以确定深度。

我意识到,对于许多 dto 与业务对象不相似的情况(例如将多个业务对象扁平化为单个数据传输对象时),这可能是不可能的,甚至是不可取的。

然而,就我而言,我的大部分数据传输对象与其业务对象非常相似(特别是用于更新数据的 DTO)。

我想知道是否有任何现有的代码生成工具(我正在寻找具有现有模板的特定解决方案,而不仅仅是像 CodeSmith 这样的通用代码生成工具)或动态程序集创建工具(例如在幕后使用反射发射)?或者,如果这是您之前做过的事情,我有兴趣听听您使用什么技术来帮助我在各种选项之间做出决定。

有帮助吗?

解决方案

您可能会发现 AutoMapper 非常有用: http://www.codeplex.com/AutoMapper

编辑,回应OP评论:

T4 模板包含在 Visual Studio 中用于代码生成。这是一篇关于使用 T4 生成实体到 DTO 代码的文章:

http://weblogs.asp.net/cibrax/archive/2009/03/11/code- Generation-with-t4-an-entities-to-dto-example.aspx

其他提示

那么在一定程度上在.NET框架本身可以用匿名类做到这一点。

例如使用LINQ到对象(例如你的业务对象),你可以在“项目”的结果集转换(名单)匿名类。

这样做的主要缺点是,现在他们不会非常便携,但与.NET 4.0和动态类我敢说,你不会需要使用第三方的解决方案,我想你会与框架本身的工具

我也想推荐 T4 模板. 。您可以使用反射来输入元数据,实际模板看起来类似于 asp 标记。这是VS内置的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top