Я пытаюсь преобразовать элемент объекта из короткого замыкания? в bool, используя AutoMapper CreateMap .. используя интерфейс распознавателя.
Я создал интерфейс IMemberValueResolver, класс для интерфейса с функцией разрешения, а затем попытался использовать CreateMap с opt.MapFrom и opt.ResolveUsing - ничего не работает ..
Интерфейс и класс компилируются без ошибок, но ошибка только CreateMap.
Пробовал следующую документацию:
http://docs.automapper.org/en/stable/Custom-value-resolvers.html
http://docs.automapper.org/en/stable/5.0-Upgrade-Guide.html
Посмотрел 2 дня и попробовал ВСЕ, что смог найти, ничего не работает ..: (
Это то, что у меня сейчас ..
Интерфейс (IMemberValueResolver.cs):
public interface IMemberValueResolver<in TSource, in TDestination, TSourceMember, TMember>
{
TMember Resolve(TSource source, TDestination destination, TSourceMember sourceMember, TMember destinationMember, ResolutionContext context);
}
Конфигурация Mapper (AutoMapperConfig.cs):
public class IsBootstrapResolver : IMemberValueResolver<PageTemplateDataContract, PageTemplateViewModel, short?, bool>
{
public bool Resolve(PageTemplateDataContract source, PageTemplateViewModel destination, short? sourceMember, bool destMember, ResolutionContext context)
{
return sourceMember == 1 ? true : false;
}
}
//NONE OF THESE WORK!!!!!
public class DataContractToViewModelProfile : Profile
{
public DataContractToViewModelProfile()
{
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.ResolveUsing<IsBootstrapResolver>().FromMember(x => x.IsBootstrapEnable));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.ResolveUsing(IsBootstrapResolver));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.MapFrom<IsBootstrapResolver, short?>(!?!?!?!));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.MapFrom(new IsBootstrapResolver()));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.ResolveUsing<IsBootstrapResolver>().FromMember(x => x.IsBootstrapEnable));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.ResolveUsing<IsBootstrapResolver, bool>(src => src.IsBootstrapEnable));
}
}
Я ожидаю, что объект сопоставлен с коротким замыканием? конвертируется в логическое значение с помощью специального распознавателя.
Спасибо!