對映繼承有兩個功能:
繼承基類配置是從基類或介面配置繼承對映配置
執行時多型對映
opt-in
,您可以顯式指定要從包含基本型別的配置繼承的對映,也可以在包含includebase
的派生型別配置中指定該對映::
或者createmap()
.include
() .formember(dest => dest.somemember, opt => opt.mapfrom(src => src.othermember));
createmap();
在上面的每種情況下,派生對映從基本對映配置繼承自定義對映配置。createmap()
.formember(dest => dest.somemember, opt => opt.mapfrom(src => src.othermember));
createmap()
.includebase
();
示例:
public
class order
public
class onlineorder : order
public
class mailorder : order
public
class orderdto
public
class onlineorderdto : orderdto
public
class mailorderdto : orderdto
cfg.createmap()
.include()
.include();
cfg.createmap();
cfg.createmap();
});//執行對映
var order = new onlineorder();
您可以從派生類中指定繼承,而不是從基類中配置繼承:
cfg.createmap
() .formember(o => o.id, m => m.mapfrom(s => s.orderid));
cfg.createmap
() .includebase
(); cfg.createmap
() .includebase
();});
這引入了額外的複雜性,因為有多種方法可以對映屬性。 這些**的優先順序如下
為了演示這個,讓我們修改上面顯示的類顯式對映 (using .mapfrom())
繼承的顯式對映
忽略屬性對映
約定對映(通過約定匹配的屬性)
//領域物件
public
class order
public
class onlineorder : order
}public
class mailorder : order
//dtos
public
class orderdto
}//對映
cfg.createmap()
.include()
.include()
.formember(o=>o.referrer, m=>m.ignore());
cfg.createmap();
cfg.createmap();
});//執行對映
var order = new onlineorder ;
請注意,在我們的對映配置中,我們忽略了referrer
(因為它在order基類中不存在)並且具有比約定對映更高的優先順序,所以該屬性不會被對映。 AutoMapper官方文件 十 巢狀對映
在對映引擎執行對映時,可以使用多種方法之一來解析目標成員值。其中一種方法是使用另一種型別對映,其中在對映配置中還配置了源成員型別和目標成員型別。這使我們不僅可以平坦化我們的源型別,還可以建立複雜的目標型別。例如,我們的源型別可能包含另乙個複雜型別 public class outersource p...
AutoMapper官方文件 六 投影
public class calendarevent public string title 進入更適合網頁輸入表單的東西 public class calendareventform public int eventhour public int eventminute public string...
cocos2d js官方文件 十 log
api改動情況,左邊為新增,右邊為原來的。cc.log 不變 cc.warn 新增 cc.error 新增 cc.assert cc.assert 此次改造有以下幾點原因 新的api的使用範例 cc.log this is a log cc.log this is a log for s cocos...