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

本文关键字:何使用 ValueResolver 构造函数 默认 字段 类型 如果 | 更新日期: 2023-09-27 17:50:05

我有一个模型,属性:

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 

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

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

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

这个答案描述了方法。

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