私はAutoMapperでセットアップされたプロジェクトに取り組んでいます。これのほとんどは私にとって外国人なので、私はなぜかについて心を開いています。なぜ私はちょうどパラメータとしてFooViewを取るコンストラクタを使用することはありません、代わりにORMを使用してのMapper vs Constructor
class Foo
{
public string name { get; set; }
public int rank { get; set; }
public bool isDelected { get; set; }
}
class FooView
{
public string name { get; set; }
public int rank { get; set; }
}
:
はのは、私は2つのクラスがあるとしましょう。この場合
class Foo
{
public Foo(FooView source)
{
this.name = source.name;
this.rank = source.rank;
}
}
私はFooViewを持っていると私はちょうどそれが私に私は1つの場所で必要なすべてのロジックを与えると私はどこにでもそれを使用することができます
var myFoo = new Foo(FooView);
を言うのFooが必要なとき。コードを更新する必要がある場合は、モデル定義と同じ場所です。それで私は何が欠けているのですか?
別に私のマッピング・ロジックを保つことができますが、何もしあなたが20、30以上の特性を持っていますか? Automapperは、名前が一致する場合、これらを自動的にマッピングします。それだけで設定上のオーバーヘッドはありません。 –
[Automapper](http://automapper.org/)のメリットを読んで、それを使用するかどうかを自分で決める必要があります。オートマトンのメリットの1つ(*これ以上の機能性があります)は、プロパティが全く同じシグネチャ(両方ともパブリックセッター/ゲッタを持っていなければなりません)の場合、2つのオブジェクトに値を自動的にマップできます。これは、同じタイプ(クローンのようなもの)でも、異なるタイプのものでもかまいません。これは特に、ビジネス/データロジックモデルに非常に似ている多くのビューモデルがある場合には、多くのコードを節約することができます。 – Igor
私は@MattyMのように、これは大きな改善でもテスト能力と一貫性を指摘したと思います。 'AutoMapper'文書の最初の点の1つが、なぜそれを使用するのかを説明しています:) –