Как использовать 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 

Что я должен сделать, чтобы заставить его работать?

1 5

1 ответ:

Вместо автоматического сопоставления с SelectList, вы рассматривали автоматическое сопоставление с простым массивом, а затем с помощью свойства Get-only обернуть его в SelectList?

Этот ответ описывает подход.

Также, из того же вопроса SO, есть , сконструированная идея, а также способ использовать MapFrom, чтобы сделать это непосредственно.