2011-11-17 21 views
13

La interfaz ITypeConverter se ha cambiado para tener un "Conversión TDestination (contexto ResolutionContext)" en lugar de "TDestination Convert (fuente TSource)" para el método Convert.La interfaz ITypeConverter se ha cambiado en AutoMapper 2.0

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

En mi código, ahora me sale este error:

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

Cualquier buena muestra completa para el nuevo asignador como mis creadores de mapas? No quiero cambiar el código (o código mínimo) en mis proyectos ...

Mi asignador

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

ACTUALIZACIÓN

La interfaz ITypeConverter se ha modificado para tener un "TDestination Convierta (contexto ResolutionContext) "en lugar de" TDestination Convert (fuente de TSource) "para el método Convert.

la documentación está desactualizada. Hay un ITypeConverter, como y una clase de conveniencia de TypeConverter básica. TypeConverter oculta el ResolutionContext, mientras que ITypeConverter lo expone.

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

Respuesta

15

Vas a tener que agarrar el decimal de la ResolutionContext.SourceValue propiedad:

public int? Convert(ResolutionContext context) 
    { 
     var d = (decimal)context.SourceValue; 
     if (d == 0) 
     { 
      return null; 
     } 
     return (int) d; 
    } 
Cuestiones relacionadas