如何使用 AutoMapper 将两个嵌套对象合并为一个
How to merge two nested object into one using AutoMapper
您好,我一直在使用 AutoMapper 来转换我的对象,现在我正在尝试将两个嵌套对象合并为一个,但我不知道该怎么做。
我有以下代码:
这些是我的源对象
class SourceSubItemA
{
string subPropertyA;
}
class SourceSubItemB
{
string subPropertyB;
}
class Source
{
SourceSubItemA subItemA;
SourceSubItemB subItemB;
}
目标对象
class DestinationSubItem
{
string propertyA;
string propertyB;
}
class Destination
{
DestinationSubItem destItem;
}
这是我的 Automapper 配置
Mapper.CreateMap<SourceSubItemA, DestinationSubItem>()
.ForMember(dest => propertyA, opt => opt.MapFrom(src => src.subPropertyA));
Mapper.CreateMap<SourceSubItemB, DestinationSubItem>()
.ForMember(dest => propertyB, opt => opt.MapFrom(src => src.subPropertyB));
// Probably I have to do something more here.
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.destItem, opt => opt.MapFrom(src => src.subItemA));
最后我通过这种方式使用映射器
Mapper.Map<Destination>(sourceObject);
预期结果必须是一个 Destination 对象,其子项同时填充了两个属性。
请帮忙!
如我所见,Destination
只是 DestinationSubItem
的包装器,它是真正需要从 Source
.
获取值的包装器
在这种情况下,您可以定义一个从 Source
到 Destination
的映射器,将 Source
直接映射到 DestinationSubItem
的结果放入 dest.destItem
].
举个例子:
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.destItem, opt => opt.MapFrom(src => Mapper.Map<DestinationSubItem>(src));
Mapper.CreateMap<Source, DestinationSubItem>()
.ForMember(dest => dest.propertyA, opt => opt.MapFrom(src => src.subItemA.subPropertyA)
.ForMember(dest => dest.propertyB, opt => opt.MapFrom(src => src.subItemB.subPropertyB);
您好,我一直在使用 AutoMapper 来转换我的对象,现在我正在尝试将两个嵌套对象合并为一个,但我不知道该怎么做。
我有以下代码:
这些是我的源对象
class SourceSubItemA
{
string subPropertyA;
}
class SourceSubItemB
{
string subPropertyB;
}
class Source
{
SourceSubItemA subItemA;
SourceSubItemB subItemB;
}
目标对象
class DestinationSubItem
{
string propertyA;
string propertyB;
}
class Destination
{
DestinationSubItem destItem;
}
这是我的 Automapper 配置
Mapper.CreateMap<SourceSubItemA, DestinationSubItem>()
.ForMember(dest => propertyA, opt => opt.MapFrom(src => src.subPropertyA));
Mapper.CreateMap<SourceSubItemB, DestinationSubItem>()
.ForMember(dest => propertyB, opt => opt.MapFrom(src => src.subPropertyB));
// Probably I have to do something more here.
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.destItem, opt => opt.MapFrom(src => src.subItemA));
最后我通过这种方式使用映射器
Mapper.Map<Destination>(sourceObject);
预期结果必须是一个 Destination 对象,其子项同时填充了两个属性。
请帮忙!
如我所见,Destination
只是 DestinationSubItem
的包装器,它是真正需要从 Source
.
在这种情况下,您可以定义一个从 Source
到 Destination
的映射器,将 Source
直接映射到 DestinationSubItem
的结果放入 dest.destItem
].
举个例子:
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.destItem, opt => opt.MapFrom(src => Mapper.Map<DestinationSubItem>(src));
Mapper.CreateMap<Source, DestinationSubItem>()
.ForMember(dest => dest.propertyA, opt => opt.MapFrom(src => src.subItemA.subPropertyA)
.ForMember(dest => dest.propertyB, opt => opt.MapFrom(src => src.subItemB.subPropertyB);