如何使用自动映射器将深度对象转换为平面对象并返回?
例如:
Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
Address
{
public string City { get; set; }
public string State { get; set; }
}
FlatObject
{
public string Name { get; set; }
public string City { get; set; }
public string State { get; set; }
}
最佳答案
您可以通过两种方式完成此操作:
定义两个映射,一个来自
FlatObject --> Person
,另一个来自FlatObject --> Address
:Mapper.CreateMap<FlatObject, Address>(); Mapper.CreateMap<FlatObject, Person>() .ForMember(dest => dest.Address, opt => opt.MapFrom(src => src));
定义一个映射并在映射定义中创建
Address
对象:Mapper.CreateMap<FlatObject, Person>() .ForMember( dest => dest.Address, opt => opt.MapFrom( src => new Address { City = src.City, State = src.State }));
我个人会选择选项 1。这样,如果您将属性添加到 FlatObject
,您就不必担心更新映射定义(如果您使用选项 #2,您会担心) .
然而,@Raphaël指出作者的链接质疑映射到域对象的有效性是正确的。
关于c# - 自动映射器将深对象自动映射到平面对象并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18665650/