AutoMapper官方文件 十五 對映繼承

2021-08-11 10:51:30 字數 1920 閱讀 1966

對映繼承有兩個功能:

從基類或介面配置繼承對映配置

執行時多型對映

繼承基類配置是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...