映射到具有内部构造函数的自定义类型

时间:2012-03-13 14:39:53

标签: c# .net exception-handling automapper tridion

我们正在尝试映射一个对象 - 一个Tridion Outbound Email Contact - 它具有带内部构造函数的自定义字典类型属性 - ExtendedDetailCollection

从对象到Viewmodel的精细映射

Mapper.CreateMap<Contact,ContactViewModel>()
    .ForMember(x=>x.Name, m=>m.MapFrom(x=>x.ExtendedDetails["Name"].StringValue))

但另一种方式不起作用

我们尝试过:

Mapper.CreateMap<ContactViewModel,Contact>()
    .ForMember(x=>x.ExtendedDetails["Name"].Value, m => m.MapFrom(x=>x.Name));

但是会引发运行时异常。

编辑:例外的消息是:

  

AutoMapper.AutoMapperConfigurationException:自定义配置   成员仅支持某种类型的顶级个人成员。

我们还尝试了各种类型转换器和值解析器,但是没有一个允许我们获取要映射到的对象,这是我们需要访问以映射ExtendedDetails对象。

Mapper.CreateMap<ContactViewModel,Contact>()
    .ForMember(x=>x.ExtendedDetails, m => ????);

是否有这样的模式或者使用静态方法更容易?

1 个答案:

答案 0 :(得分:1)

如果ExtendedDetails是一个类,则需要为此类创建Map,然后为类的名称创建单个属性。