2012-12-29 7 views
5

Ich habe Modell mit Eigentum:Wie ValueResolver verwenden, wenn Feldtyp nicht über einen Standardkonstruktor verfügen?

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

Und ich habe ValueResolver

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

Dann konfiguriere ich Mapping

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

Aber es sagt mir, dass

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

Was sollte ich tun, damit es funktioniert?

Antwort

3

Anstatt Automapping zu einem Select, haben Sie Automapping zu einem einfachen Array betrachtet, und dann ein Get-Unterkunft, die nur unter Verwendung dieses als Select zu wickeln?

This answer beschreibt den Ansatz.

Auch von der gleichen Frage SO gibt es die ConstructedBy Idee, sowie eine Möglichkeit, MapFrom zu verwenden, um dies direkt zu tun.

Verwandte Themen