Похоже, нет, это не позаботится об этом автоматически для вас. Интересно, что будет отображать enum
на обычный int
.
Глядя на источник в AutoMapper, я думаю, что проблемная строка это:
Convert.ChangeType(context.SourceValue, context.DestinationType, null);
Предполагая, что context.SourceValue = DummyTypes.Foo
и context.DestinationType
равны int?
, вы получите:
Convert.ChangeType(DummyTypes.Foo, typeof(int?), null)
, который выдает подобное исключение:
Неверное приведение типа 'UserQuery + DummyTypes' к
'System.Nullable`1 [[System.Int32, mscorlib, версия = 4.0.0.0
Поэтому я думаю, что на самом деле вопрос в том, почему мы не можем привести переменную типа enum
к int?
Этот вопрос уже задавался здесь .
Это похоже на ошибку в AutoMapper. В любом случае, обходной путь заключается в том, чтобы сопоставить свойство вручную:
Mapper.CreateMap<DummySource, DummyDestination>()
.ForMember(dest => dest.Dummy, opt => opt.MapFrom(src => (int?)src.Dummy));