2011-11-17 18 views
13

Interfejs programu ITypeConverter został zmieniony tak, aby miał "Konwertację TDest (Kontekstu RozdzielczośćContext)" zamiast "Konwersja TDest (źródło TSource)" dla metody Konwertuj.Interfejs ITypeConverter został zmieniony w AutoMapper 2.0

http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters

W moim kodu, teraz dostaję ten błąd:

'BusinessFacade.Mappers.DecimalToNullableInt' does not implement interface member 'AutoMapper.ITypeConverter.Convert(AutoMapper.ResolutionContext)'

Każdy dobry pełnej próbki do nowego elementu odwzorowującego jak mój mappers? Nie chcę zmieniać żadnego kodu (lub minimalny kod) w moich projektów ...

Moja odwzorowujący

public class DecimalToNullableInt : ITypeConverter<decimal, int?> 
    { 
     public int? Convert(decimal source) 
     { 
      if (source == 0) 
       return null; 
      return (int)source; 
     } 
    } 

UPDATE

Interfejs ITypeConverter została zmieniona mieć „TDestination Convert (contextContext context) "zamiast" Converest TDest (źródło TSource) "dla metody Convert.

Dokumentacja jest właśnie nieaktualna. Istnieje ITypeConverter, jako oraz podstawowa klasa wygody TypeConverter. TypeConverter ukrywa wartość ResolutionContext z , a ITypeConverter udostępnia ją.

http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters

https://github.com/AutoMapper/AutoMapper/wiki/Custom-type-converters

http://groups.google.com/group/automapper-users/browse_thread/thread/6c523b95932f4747

Odpowiedz

15

Musisz chwycić po przecinku od nieruchomości ResolutionContext.SourceValue:

public int? Convert(ResolutionContext context) 
    { 
     var d = (decimal)context.SourceValue; 
     if (d == 0) 
     { 
      return null; 
     } 
     return (int) d; 
    } 
Powiązane problemy