C# 如何将包含对象的实体强制转换为AutoMapper中的其他实体?

C# 如何将包含对象的实体强制转换为AutoMapper中的其他实体?,c#,automapper,autofac,C#,Automapper,Autofac,我在项目中使用AutoMapper,需要将包含对象的域实体强制转换为视图模型。 包含的对象是具有对象当前特征的域实体的当前状态。视图模型具有与其他属性(不包括对象)相同级别的特性属性,因为我认为它是更好的解决方案。 我尝试在MapperProfile中使用以下代码: CreateMap<DomainEntity, ViewModel> .ForMember(...) ... .ForPath(dest => dest, opt => opt.Map

我在项目中使用AutoMapper,需要将包含对象的域实体强制转换为视图模型。 包含的对象是具有对象当前特征的域实体的当前状态。视图模型具有与其他属性(不包括对象)相同级别的特性属性,因为我认为它是更好的解决方案。 我尝试在MapperProfile中使用以下代码:

CreateMap<DomainEntity, ViewModel>
    .ForMember(...)
    ...
    .ForPath(dest => dest, opt => opt.MapFrom(source => 
Mapper.Map<IncludedEntity, ViewModel>(source.Child)));
更新2

我的映射:

CreateMap<Balloon, BalloonDetailDto>
    .ForPath(dest => dest, opt => opt.MapFrom(source => 
Mapper.Map<BalloonSnapshot, BalloonDetailDto>(source)));

CreateMap<BalloonSnapshot, BalloonDetailDto>()
    .ForMember(s => s.Id, opt => opt.Ignore());
CreateMap
.ForPath(dest=>dest,opt=>opt.MapFrom(source=>
Mapper.Map(来源));
CreateMap()
.ForMember(s=>s.Id,opt=>opt.Ignore());
因此,我希望通过一个字符串来强制转换DomainEntity:

var viewModel = _mapper.Map<Balloon, BalloonDetailDto>(balloon);
var viewModel=\u mapper.Map(气球);

我在对这个问题的评论中找到了工作解决方案:

它需要使用这个:

.ConstructUsing((source, ctx) => ctx.Mapper.Map<IncludedEntity, ViewModel>(source.Child))
.ConstructUsing((source,ctx)=>ctx.Mapper.Map(source.Child))
相反,这是:

.ForPath(dest => dest, opt => opt.MapFrom(source =>
Mapper.Map<IncludedEntity, ViewModel>(source.Child)));
.ForPath(dest=>dest,opt=>opt.MapFrom(source=>
Mapper.Map(source.Child));

我在对这个问题的评论中找到了工作解决方案:

它需要使用这个:

.ConstructUsing((source, ctx) => ctx.Mapper.Map<IncludedEntity, ViewModel>(source.Child))
.ConstructUsing((source,ctx)=>ctx.Mapper.Map(source.Child))
相反,这是:

.ForPath(dest => dest, opt => opt.MapFrom(source =>
Mapper.Map<IncludedEntity, ViewModel>(source.Child)));
.ForPath(dest=>dest,opt=>opt.MapFrom(source=>
Mapper.Map(source.Child));

这还不清楚,你能展示一下简化的类吗,以及你想要达到的目标啊,我说的是简化!(只有你需要解释问题的部分)@MichaelRandall我添加了我的类。@MichaelRandall,哦,我太不注意了。这更好吗?)这还不清楚,你能展示简化的课程,以及你想要达到的目标吗?啊,我说简化!(只有你需要解释问题的部分)@MichaelRandall我添加了我的类。@MichaelRandall,哦,我太不注意了。这更好吗?)但在这个解决方案之后,我在尝试执行
mapper.Map
时遇到了问题。现在我显然需要设置这个mappnig。但是在这个解决方案之后,我在尝试执行
mapper.Map
时遇到了问题。现在我需要设置这个映射。
.ForPath(dest => dest, opt => opt.MapFrom(source =>
Mapper.Map<IncludedEntity, ViewModel>(source.Child)));