Интерфейс ITypeConverter был изменен в AutoMapper 2.0
Интерфейс ITypeConverter был изменен, чтобы вместо "преобразования TDestination Convert (источник TSource)" был преобразован "TDestination Convert (contextContext context)" для метода Convert.
http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters
В моем коде теперь я получаю эту ошибку:
'BusinessFacade.Mappers.DecimalToNullableInt' не реализует член интерфейса 'AutoMapper.ITypeConverter.Convert(AutoMapper.ResolutionContext)'
Любая хорошая полная выборка для нового картографа, такого как мои картографы? Я не хочу менять код (или минимальный код) в своих проектах...
Мой картограф
public class DecimalToNullableInt : ITypeConverter<decimal, int?>
{
public int? Convert(decimal source)
{
if (source == 0)
return null;
return (int)source;
}
}
UPDATE
Интерфейс ITypeConverter был изменен, чтобы вместо "преобразования TDestination Convert (источник TSource)" был преобразован "TDestination Convert (contextContext context)" для метода Convert.
документация просто устарела. Существует 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
Ответы
Ответ 1
Вам придется взять десятичное значение из свойства ResolutionContext.SourceValue
:
public int? Convert(ResolutionContext context)
{
var d = (decimal)context.SourceValue;
if (d == 0)
{
return null;
}
return (int) d;
}