2009-08-20 10 views
0

私はここで解決するには問題があります:DTOとターゲットクラスの間でラムダ式をスマートに変換する方法は?

最上位層では、dtoで作業します。 Entityフレームワークをデータレイヤーで使用し、エンティティと連携して結果をdtosに変換します。

上位層でカスタム検索が行われていますが、それぞれのプロパティが同じ名前と型を持つと仮定して、これらのラムダ式をクラス間でどのように変換するのですか?

答えて

1

共通のプロパティを含むインターフェイスを作成し、関連するクラスでそのインターフェイスを実装してから、ラムダを書き換えることができますか?

編集:これを行うことはできないので、これはもっと複雑になります。私は2つのオプションを参照してください。

  1. は(ほかにあなたのラムダが複雑な場合は特に、多くの作業をし、エラーが発生しやすい)、実行時に最初から式ツリーを生成します。

  2. ラムダを最初に提案したとおりに書き換え、実行時にラムダのパラメータ式をクラスの型を参照する新しいパラメータ式に置き換え、元のパラメータ式への参照を次のように置き換えます:ExpressionVisitor新しいパラメータ式への参照。

コードでラムダを書くことができますので、2を強くおすすめします。実行時には、式ツリーで比較的単純な置き換えを行うだけです。これは、あなたが現在持っているラムダのための単一のソリューションであり、将来的に思い付きます。

+0

ええと、インターフェースが存在するのを忘れてしまった...インターフェースを使ってやってみるよ、ありがとう;) –

+0

実際、私はできないと思う。 Entity Frameworkは、POCOインターフェイスに準拠させることができない関係のためにいくつかのクラスを使用します。 –

関連する問題