2012-12-29 12 views
5

Ho il modello con la proprietà:Come utilizzare ValueResolver se il tipo di campo non ha un costruttore predefinito?

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

E devo ValueResolver

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

Poi ho configurare la mappatura

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

ma si dice che mi

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

Cosa dovrei fare per farlo funzionare?

risposta

3

Invece di eseguire automaticamente l'automapping a una lista di selezione, hai considerato l'automapping su una matrice semplice e quindi utilizzando una proprietà Get-only per includerla come una lista di selezione?

This answer descrive l'approccio.

Inoltre, dalla stessa domanda SO, c'è l'idea ConstructedBy, così come un modo per utilizzare direttamente MapFrom.

Problemi correlati