2011-11-17 6 views
13

ITypeConverterインターフェイスが、Convertメソッドの "TDestination Convert(TSource source)"の代わりに "TDestination Convert(ResolutionContext context)"に変更されました。私のコードでAutoMapper 2.0でITypeConverterインターフェイスが変更されました

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

、今私はこのエラーを取得する:

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

私のマッパーのような新しいマッパーのための任意の良い完全なサンプル?私はITypeConverterインタフェースは「TDestinationを持つように変更されました

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

UPDATEマイマッパー

...私のプロジェクトで任意のコード(または最小コード)を変更したくありませんConvertメソッドの "TDestination Convert(TSource source)"の代わりに "Convert(ResolutionContext context)"を使用します。

マニュアルの内容は古くなっています。 のようなITypeConverterがベースのTypeConverterコンビニエンスクラスとして用意されています。 TypeConverterは ResolutionContextを隠し、ITypeConverterはそれを公開します。

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

答えて

15

あなたはResolutionContext.SourceValueプロパティから小数をつかむ必要があります:

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