1

一連の規則(たとえば、すべてのパブリックプロパティ)を使用して、ビジネスオブジェクト(データのマッピングではなくタイプ定義)からデータ転送オブジェクトを生成するための最良のアプローチを探しています。

これは、dtoがビジネスオブジェクトに似ていない多くの場合(多数のビジネスオブジェクトを単一のデータ転送オブジェクトにフラット化する場合など)には不可能であるか、望ましくない場合があることを認識しています。

ただし、私の場合、データ転送オブジェクトの大部分はビジネスオブジェクトと非常によく似ています(特にデータを更新するためのDTOの場合)。

既存のコード生成ツール(CodeSmithのような汎用コード生成ツールだけでなく、既存のテンプレートを使用した特定のソリューションを探しています)、または動的アセンブリ作成ツール(たとえば、内部でReflection Emitを使用)があるかどうか疑問に思っていましたか?または、これが以前に行ったことである場合は、さまざまなオプションを決定するのにどのテクニックを使用したかについて知りたいと思います。

4

3 に答える 3

4

AutoMapperは非常に便利です:http://www.codeplex.com/AutoMapper

OPコメントに応じて編集:

T4テンプレートは、コード生成用のVisualStudioに含まれています。T4を使用したエンティティからDTOへのコード生成に関する投稿は次のとおりです。

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

于 2010-03-10T03:29:19.953 に答える
0

ある程度、.NETFramework自体は匿名クラスでこれを行うことができます。

たとえば、Linq to Objects(たとえばビジネスオブジェクト)を使用すると、結果セットを匿名クラス(のリスト)に「投影」できます。

これの主な欠点は、現時点では移植性が低いことですが、.NET 4.0と動的クラスでは、サードパーティのソリューションを使用する必要はないと思います。フレームワーク自体を備えたツールがあると思います。

于 2010-03-10T03:39:28.467 に答える
0

T4テンプレートもお勧めし ます。リフレクションを使用してメタデータをフィードでき、実際のテンプレートはaspマークアップに似ています。これはVSに組み込まれています。

于 2011-03-18T13:26:57.217 に答える