第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

AutoMapper 覆蓋遞歸類型

AutoMapper 覆蓋遞歸類型

C#
阿晨1998 2021-10-23 17:03:11
我有一個(gè)看起來(lái)有點(diǎn)像這樣的 Dto:class TypeDto{        int Id {get; set;}    string Name {get; set;}    string DisplayName {get; set;}    IEnumerable<TypeDto> Children {get; set;}}現(xiàn)在我需要從兩個(gè)不同的來(lái)源映射到它。那是因?yàn)槠渲幸粋€(gè)包含Name,另一個(gè)包含DisplayName. 所以類型:class Type1{    int Id {get; set;}    string Name {get; set;}    IEnumerable<Type1> Children {get; set;}}class Type2{    int Id {get; set;}    string DisplayName {get; set;}    IEnumerable<Type2> Nested {get; set;}}注意Children/ Nestedenumerable 中的名稱差異?,F(xiàn)在對(duì)于地圖,我會(huì)這樣做:config.CreateMap<Type1, TypeDto>();config.CreateMap<Type2, TypeDto>()    .ForMember(dest => dest.Children, opts => opts.MapFrom(src => src.Nested));var dto = _mapper.Map<TypeDto>(type1Instance);_mapper.Map(type2Instance, dto);第一個(gè)映射按預(yù)期工作,遞歸映射子項(xiàng),填充Id和Name字段并DisplayName在null任何地方保持相等。然而,第二個(gè)映射DisplayName正確地填充了根對(duì)象,但隨后在其子對(duì)象中,它使該Name字段無(wú)效。例如:var type1Instance = new Type1 {     Id = 1,     Name = "root",     Children = new[] { new Type1         {            Id = 2,            Name = "child"        }}};var type2Instance = new Type2 {     Id = 1,     DisplayName = "Root",     Children = new[] { new Type2        {            Id = 2,            DisplayName = "Child"        }}};映射以下實(shí)例后,結(jié)果的字段設(shè)置為:Id = 1,Name = "root",DisplayName = "Root",Children = { TypeDto { Id = 2, Name = null, DisplayName = "Child", Children = null } }所以孩子的Name無(wú)效,這不是我想要的。我希望它是"child",顯然。我應(yīng)該如何配置映射器以獲得想要的行為?我無(wú)法更改Type1或Type2類,它們來(lái)自外部 API。AutoMapper 的版本是 6.2.1,.NET Framework 4.5.1。
查看完整描述

2 回答

  • 2 回答
  • 0 關(guān)注
  • 172 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)