2015-04-23 93 views
4

我有一個源類型,其屬性和目標類型具有完全相同的屬性。如何使用AutoMapper在構造函數中映射爲「this」

我配置一個簡單的映射AutoMapper像後:

Mapper.CreateMap<MySourceType, MyDestinationType>(); 

我想有MyDestinationType的構造,其具有MySourceType 參數,則自動下創建與源像初始化的類型的屬性這樣的:

public MyDestinationType(MySourceType source) 
{ 
    // Now here I am do not know what to write. 
} 

我發現的唯一的解決方法是創建

靜態工廠方法

有什麼辦法可以避免這種靜態醜陋?

+0

爲什麼要建立一個構造函數?你希望能夠調用'MyDestinationType destinationobj = new MyDestinationType(sourceobj);'但是這只是簡單地調用'MyDestinationType destinationobj = Mapper.Map (sourceobj);' 如果你確實需要一個單獨的你可以嘗試構造函數'this = Mapper.Map (source);'但是我不能100%確定你是否可以直接賦值給'this'。 編輯:我測試了它,你不能分配給'this'。 –

+0

當然不是:-) –

回答

4

雖然我個人覺得它難看,你可以做的是:

public MyDestinationType(MySourceType source) 
{ 
    Mapper.Map<MySourceType, MyDestinationType>(source, this); 
} 
+0

酷,thx。我的藉口是我剛開始使用AutoMapper –