[英]Object to Object Mapping Utility
我喜歡干凈地將公共和域對象 (因此,nHibernate在這里沒有幫助)彼此分開,這最終迫使我編寫大量代碼來將一個對象映射到另一個對象。 什么工具/插件可以讓人們在.NET中手動執行這種映射?m每當我谷歌這個時候,它認為我想做ORM,這不是我想要的。 謝謝!
編輯19:33CST:好的,我寫了一個非常基本的應用程序(非常快速編寫代碼),演示了我正在尋找的東西。 我只是想知道是否有一個VS插件可以為我做這個。
您可能想嘗試一下AutoMapper 。 這聽起來像你在尋找。
所以,似乎對運行時解決方案不滿意,我編寫了一個小實用程序,它將在代碼中創建映射。 你可以下載下面的源代碼並寫出更好的錯誤處理等等。我很感激你做的任何很酷的修改,這是在匆忙,但有效。 請尊重該代碼是根據LGPL發布的。
更新2009年6月23日 :我對清理它的代碼進行了一些更新(一點點),並且還添加了將映射保存到文件的功能,以便以后可以修改它。
使用ValueInjecter ,你可以將任何東西映射到任何東西,例如
它具有很酷的功能,如:平整和不平整
還有一個名為Otis的有趣項目。 以下是從文檔頁面獲取的示例* .otis.xml映射:
<?xml version="1.0" encoding="utf-8" ?>
<otis-mapping xmlns="urn:otis-mapping-1.0">
<class name="Otis.Tests.UserDTO, Otis.Tests" source="Otis.Tests.Entity.User, Otis.Tests" >
<member name="Id" />
<member name="Age" />
<member name="UserName" expression="$UserName.ToUpper()" nullValue="[unknown]" />
<member name="FullName" expression="[$FirstName + ' ' + $LastName]" />
<member name="ProjectCount" expression="$Projects.Count" />
<member name="Title" expression="$Gender" >
<map from="Gender.Male" to="Mr." /> <!-- projections -->
<map from="Gender.Female" to="Mrs." />
</member>
<member name="Birthday" expression="$BirthDate" format="Born on {0:D}"/>
<member name="ProjectCount" expression="$Projects.Count" />
<member name="AvgTaskDuration" expression="avg:$Projects/Tasks/Duration" />
<member name="MaxTaskDuration" expression="max:$Projects/Tasks/Duration" />
</class>
要從程序集中讀取映射文件:
// configure the new Configuration object using metadata of types in the current assembly
Configuration cfg = new Configuration(); // instantiate a new Configuration, one per application is needed
cfg.AddAssembly(Assembly.GetExecutingAssembly()); // initialize it
嗯,我以前在哪里見過它? ;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.