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



我有一个模型,属性:

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 

我该怎么做才能让它起作用?

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

这个答案描述了方法。

此外,从相同的SO问题,有ConstructedBy的想法,以及使用MapFrom直接做到这一点的方法。

相关内容

  • 没有找到相关文章

最新更新