Как использовать 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 ответ:
Вместо автоматического сопоставления с SelectList, вы рассматривали автоматическое сопоставление с простым массивом, а затем с помощью свойства Get-only обернуть его в SelectList?
Этот ответ описывает подход.
Также, из того же вопроса SO, есть , сконструированная идея, а также способ использовать
MapFrom
, чтобы сделать это непосредственно.