(.NET空間での)任意のフレームワークやユーティリティが自動的にビジネスオブジェクトからのデータ転送オブジェクトを生成するためにあります
-
19-09-2019 - |
質問
私はどのように深く行くことを決定するために、おそらく設定可能(データをマッピングしていない、型定義)を、ビジネス・オブジェクトからのデータ転送オブジェクトを生成する一連の規則(例えば、すべてのパブリックプロパティ)を使用して、最適な方法を探していますます。
これはDTO年代は、(例えば、単一のデータ転送オブジェクトにビジネス・オブジェクトの数を平坦化する場合など)、ビジネス・オブジェクトに似ていない多くの可能な、あるいは望ましくないかもしれないことを認識する。
しかし、私の場合、私のデータ転送オブジェクトの大部分は(特にDTOのデータを更新するための)彼らのビジネスオブジェクトと非常によく似ています。
私は、例えば下放ちリフレクションを使用して(または動的アセンブリの作成ツール(私は既存のテンプレート、CodeSmithのようなだけではなく、汎用のコード生成ツールを使用して、特定のソリューションを探しています)、既存のコード生成ツールがあるかどうかを疑問に思いましたカバー)?それとも、これは私はあなたが私にはさまざまなオプションの間で決定するのを助けるために使用されるどのような技術を聞いて興味がある前に、あなたがやった何かあれば。
解決
あなたはAutoMapperはかなり便利そうです: http://www.codeplex.com/AutoMapper
編集、OPのコメントへの返信です。
T4テンプレートは、コード生成のためのVisual Studioに含まれています。ここでT4を持つエンティティツーDTOコード生成にポストがある:
<のhref = "http://weblogs.asp.net/cibrax/archive/2009/03/11/code-generation-with-t4-an-entities-to-dto-example.aspx" のrel = "nofollowをnoreferrer"> http://weblogs.asp.net/cibrax/archive/2009/03/11/code-generation-with-t4-an-entities-to-dto-example.aspxする
他のヒント
まあ、ある程度の.NETフレームワーク自体は匿名クラスでこれを行うことができます。
(例えば、あなたのビジネスオブジェクト)オブジェクトへのLINQを持つたとえば、あなたは、「プロジェクト」、あなたの結果は匿名クラス(のリスト)に設定します。
することができますこのの主な欠点は、今、彼らは、しかし、.NET 4.0と私はあなたがサードパーティのソリューションを使用する必要はありませんあえて動的なクラスで、私はあなたがフレームワーク自体でツールを持っているだろう数える、非常に移植されることはありませんます。
私も推薦する<のhref = "http://odetocode.com/blogs/scott/archive/2009/10/27/using-t4-templates-for-simple-dtos.aspx" のrel = "nofollowを「> T4テンプレートを。あなたは、メタデータに供給するためにリフレクションを使用することができますし、実際のテンプレートは、ASPのマークアップに似ています。これは、VSに組み込まれています