簡體   English   中英

Automapper 一個源到多個目標

[英]Automapper one source to multiple destination

下面是我的課

class Dest1    
{    
 string prop1;
 string prop2;
 strig prop3;
 public Dest2 Dest2 {get;set;}
 pubic List<Dest3> Dest3 {get;set;}
}

class Dest2    
{   
 string prop4;
 string prop5;
 strig prop6;   
}

class Dest3        
{    
 string prop7;    
}

class Source1

{
 string prop1;
 string prop2;
 string prop3;
 string prop4;
 }
     class Source2
      {
 string prop7;
       }

我需要映射

一季度。 source1 類到 Dest1 類(我也需要映射 dest2 對象)

編輯:

Q2。 我需要將 Dest1 映射回 Source 1(反向映射)

我正在使用 .net 核心和自動映射器 .. 我是自動映射器和 .net 核心的新手 .. 提前致謝

假設您配置了映射,AutoMapper 可以根據需要從任意數量的源映射到任意數量的目的地。 例如,您請求的場景:

var configuration = new MapperConfiguration(cfg =>
    // Mapping Config
    cfg.CreateMap<Source1, Dest2>()
        .ForMember(dest => dest.prop5, opt => opt.Ignore())
        .ForMember(dest => dest.prop6, opt => opt.Ignore());
    cfg.CreateMap<Source1, Dest1>()
        .ForMember(dest => dest.Dest2, opt => opt.MapFrom(src => src));

    // Reverse Mapping Config
    cfg.CreateMap<Dest1, Source1>()
        .ForMember(dest => dest.prop4,
                   opt => opt.MapFrom(src => (src?.Dest2 != null) // ?. w/c#6 
                                             ? src.Dest2.prop4 // map if can
                                             : null)); // otherwise null
);
// Check AutoMapper configuration
configuration.AssertConfigurationIsValid();

具有相同名稱的屬性將自動映射。 任何沒有相應源屬性的目標屬性都需要被忽略。

配置 AutoMapper 后,您可以根據需要使用 IMapper 接口進行映射。

public class Foo {
    private IMapper _mapper;
    public Foo(IMapper mapper) {
        _mapper = mapper;
    }

    // Map Source1 -> Dest1
    public Dest1 Bar(Source1 source) {
        return _mapper.Map<Dest1>(source);
    }

    // Map Dest1 -> Source1
    public Source1 Baz(Dest1 dest) {
        return _mapper.Map<Source1>(dest);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM