我在一個 C# 應用程式上作業,我需要在其中映射 2 個物體。所以,我定義創建地圖如下:
CreateMap<Source, Destination>()
.ForMember(dest => dest.FirstName, map => map.MapFrom(src => src.Name.First))
.ForMember(dest => dest.LastName, map => map.MapFrom(src => src.Name.Last))
.ForMember(dest => dest.SSN, map => map.MapFrom(src => src.SSN))
.ForMember(dest => dest.HomePhoneNo, map => map.MapFrom(src => src.HomePhoneNumber()))
.ForMember(dest => dest.Address, map => map.MapFrom(src => src.Address))
.ForMember(dest => dest.MaritalStatus, map => map.MapFrom(src => (int)src.MaritalStatus))
現在,我想做 ReverseMap,但是當我為每個成員添加 .ReverseMap 時,在下一行成員中,src 和 dest 被切換。那么,有沒有辦法在一個地方為所有成員做 ReverseMap 呢?
uj5u.com熱心網友回復:
僅將一個放在ReverseMap()所有自定義映射的末尾。
這對我有用:
using AutoMapper;
class Program
{
static void Main(string[] args)
{
var configuration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<X, Y>()
.ForMember(dest => dest.Bar1, map => map.MapFrom(src => src.Foo1))
.ForMember(dest => dest.Bar2, map => map.MapFrom(src => src.Foo2))
.ReverseMap() ;
});
configuration.AssertConfigurationIsValid();
var mapper = configuration.CreateMapper();
var x1 = new X() { Foo1 = "1", Foo2 = "2"};
var mappedY = mapper.Map<Y>(x1);
var againX = mapper.Map<X>(mappedY);
Console.WriteLine($"{againX.Foo1} {againX.Foo2}");
}
}
class X
{
public string Foo1 { get; set; }
public string Foo2 { get; set; }
}
class Y
{
public string Bar1 { get; set; }
public string Bar2 { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/353488.html
上一篇:如何將空正文發布到POST端點
下一篇:避免異步方法的事件委托重新創建
