我的問題可能很愚蠢,但我很確定我錯過了這個問題的一個非常重要的部分。我必須做一些對象到對象的映射(在C#項目中使用的域類和發送到Flash客戶端的類之間)。使用automapper的優點是什麼?
我的第一個選擇是Automapper。但我有一些問題(嵌套屬性,而不是paramterless構造函數定義)。事實證明,使用automapper映射一個非常複雜的類型並不那麼容易。
然後我的問題是:爲什麼不實行類似的方法:
ClassA GetClassAByClassB(ClassB pObj)
{
ClassA objA = new ClassA();
objA.Prop1 = pObj.Prop1;
objA.NestedType.Prop2 = pObj.Prop2;
//....Some more.....
return objA;
}
它究竟像使用Automapper進行映射的靈活性同一水平。您仍然必須提供源對象中的哪些屬性被複制到目標對象中的哪些屬性中。你只需要使用'='而不是lambda表達式。
但是,如果你改變了你的域類中的某些東西,你必須改變這個「映射」部分。那麼,說服我使用Automapper的主要原因是什麼(正如我在開始時所說的,我很確定我錯過了一些重要的東西)。
那些沒有相同名稱的房產呢?和嵌套的屬性?我認爲我應該改變慣例,但有時一方的財產是'PositionX',而另一方只是'X'。 (只是一個例子 - 屬性anmes可能是相當不可預知的)。所以不是我不應該在我的情況下使用Automapper? – Katalonis 2010-10-22 11:23:45
@Katalonis - 然後使用lambda表達式以類型安全的方式配置映射器。添加了代碼示例和鏈接。 – 2010-10-22 11:58:06