如果字段类型没有默认构造函数,如何使用ValueResolver?

时间:2012-12-29 18:19:13

标签: c# .net automapper

我有财产模型:

public class MyModel{
       public SelectList PropertyTypeList { get; set; }
}

我有ValueResolver

public class MyPropertyValueResolver : ValueResolver<ProductProperty, SelectList>
{
    protected override SelectList ResolveCore(ProductProperty source)
    {
        myList = .......;
        return new SelectList(myList, "Value", "Text");
    }
}

然后我配置映射

    Mapper.CreateMap<Source, Destination>()
          .ForMember(s => s.PropertyTypeList, opt => opt.ResolveUsing<MyPropertyValueResolver>());

但它告诉我

Type 'System.Web.Mvc.SelectList' does not have a default constructor 

我应该怎样做才能使它发挥作用?

1 个答案:

答案 0 :(得分:3)

您是否考虑过自动化到一个简单的数组,然后使用Get-only属性将其包装为SelectList,而不是自动转移到SelectList?

This answer描述了这种方法。

此外,根据相同的SO问题,有ConstructedBy的想法,以及使用MapFrom直接执行此操作的方法。