我正在尝试将ReferralContract.AssessmentId属性映射到Referral.Assessment.Id以下代码有效,但我确信有更清洁的方法....请告诉我这是如此;-)
// Destination classes
public class Referral
{
public Referral()
{
Assessment = new Assessment();
}
public int Id { get; set; }
public Assessment Assessment { get; set; }
}
public class Assessment
{
public int Id { get; set; }
}
// Source Class
public class ReferralContract
{
public int Id { get; set; }
public int AssessmentId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的Automapper映射是
Mapper.CreateMap<ReferralContract, Referral>()
.ForMember(x => x.Assessment,
opt => opt.MapFrom(scr => new Assessment { Id = …Run Code Online (Sandbox Code Playgroud) 我们正在尝试映射一个对象 - 一个Tridion Outbound Email Contact - 它有一个带有内部构造函数的自定义字典类型属性 - ExtendedDetailCollection
从对象到Viewmodel的精细映射
Mapper.CreateMap<Contact,ContactViewModel>()
.ForMember(x=>x.Name, m=>m.MapFrom(x=>x.ExtendedDetails["Name"].StringValue))
Run Code Online (Sandbox Code Playgroud)
但另一种方式不起作用
我们尝试过:
Mapper.CreateMap<ContactViewModel,Contact>()
.ForMember(x=>x.ExtendedDetails["Name"].Value, m => m.MapFrom(x=>x.Name));
Run Code Online (Sandbox Code Playgroud)
但是会引发运行时异常.
编辑:异常的消息是:
AutoMapper.AutoMapperConfigurationException:仅对类型上的顶级单个成员支持成员的自定义配置.
我们还尝试了各种类型的转换器和值解析器,但是没有一个允许我们获取被映射到的对象,这是我们需要访问以映射ExtendedDetails对象.
Mapper.CreateMap<ContactViewModel,Contact>()
.ForMember(x=>x.ExtendedDetails, m => ????);
Run Code Online (Sandbox Code Playgroud)
是否有这样的模式或使用静态方法更容易?