Automapper 一个来源到多个目的地
Automapper one source to multiple destination
下面是我的class
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;
}
我需要映射
Q1。 source1 class 到 Dest1 Class(我还需要映射 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);
}
}
下面是我的class
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;
}
我需要映射
Q1。 source1 class 到 Dest1 Class(我还需要映射 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);
}
}