2016-07-05 6 views
4

Nach der Aktualisierung der AutoMapper-Version von 4.2.1 auf 5.0.0 habe ich Compilatio Fehler, dass SourceValue fehlt. Hier ist mein BeispielAutomapper 5.0.0 fehlt SourceValue (Custom Converters)

public class DraftLayoutCellPropertiesConverter : ITypeConverter<DraftLayoutCell, DraftGamePeriodDraftLayoutViewModel> 
    { 
     public DraftGamePeriodDraftLayoutViewModel Convert(ResolutionContext context) 
     { 
      var input = context.SourceValue as DraftLayoutCell; 
      var result = new DraftGamePeriodDraftLayoutViewModel(); 

      if (input != null) 
      { 

Was die Ersetzung dieser Eigenschaft enthalten sein sollte? Ist das der beste Weg, benutzerdefinierte Konverter zu erstellen? Ich habe erwartet, dass das Update den bestehenden Code nicht bricht, da viele Leute die App benutzen.

Antwort

-1

Wie ich sehe, hat die ITypeConverter folgende Erklärung ab:

public interface ITypeConverter<in TSource, out TDestination> 
{ 
    TDestination Convert(TSource source, ResolutionContext context); 
} 

Und es sieht aus wie Sie falsch diese Schnittstelle implementiert haben.

Sobald Sie es richtig implementiert haben, können Sie TSource source Parameter verwenden, um Zugriff auf Sie zu erhalten SourceValue.

Über Ihre Frage 'Ist das der beste Weg, benutzerdefinierte Konverter : if you need to use the custom Converter zu tun, dann müssen Sie definitiv Schnittstelle oben für es implementieren. Es hängt jedoch von Ihrem Fall ab und manchmal müssen Sie möglicherweise einen benutzerdefinierten Wertanbieter verwenden, der wie ein Konverter verwendet werden kann.

2

In AutoMapper 5, Die Schnittstelle ITypeConverter geändert haben, müssen Sie Ihre Implementierung aktualisieren:

public class DraftLayoutCellPropertiesConverter : ITypeConverter<DraftLayoutCell, DraftGamePeriodDraftLayoutViewModel> 
{ 
    public DraftGamePeriodDraftLayoutViewModel Convert(DraftLayoutCell source, DraftGamePeriodDraftLayoutViewModel destination, ResolutionContext context) 
    { 
     var input = source; 
     ... 
    } 
}