2012-10-26 48 views
-1

我有兩個對象,它們基本上(並非完全相同!)。他們都具有價值的屬性。automapper - 具有值的地圖屬性

我想將一個對象映射到另一個對象,並覆蓋從源目標到目標目標的所有屬性值。但似乎這不是默認情況下發生的?

注意: 我的地圖已經在我的應用程序啓動時定義。

我的對象基本上是這樣的:

public class Object1 
{ 
    public String Name = "My new Name"; 
} 

public class Object2 
{ 
    public String Name = "My old Name"; 
} 

// Then somewhere in my code: 
Mapper.Map(obj1, obj2); 

所以我嘗試所有的值從Object1,映射到Object2。但是當映射完成時,則Object2仍具有其舊值,而不是Object1的值。

如何映射AutoMapper中的值?

回答

1

更新

Automapper返回新的實例,指定返回實例到舊的。

object1 = Mapper.Map<Object1, Object2>(object2); 
+0

對不起,我忘了提及。我已經定義了我的地圖(否則會引發錯誤)。而且我也映射實例化的對象,而不是類。但是具有值的屬性(src和tagret)沒有映射。 – Vivendi

+0

@Vivendi看到我的更新。 –

+0

謝謝,那就是訣竅。 – Vivendi

3

您應該配置AutoMapper第一:

Mapper.CreateMap<Object1, Object2>(); 

在你的榜樣,你試圖映射classes但它是不可能的,你應該映射類instances

var o1 = new Object1(); 
var o2 = new Object2(); 

Mapper.Map(o1, o2); 
+0

對不起,我忘記提及了。我已經定義了我的地圖(否則會引發錯誤)。而且我也映射實例化的對象,而不是類。但是具有值的屬性(src和tagret)沒有映射。 – Vivendi