AutoMapper отображает недопустимые типы значений
Похоже, что AutoMapper не отображает пустые значения. Он отобразит свойства только в том случае, если значение обнуляется.
Как мне сказать AutoMapper всегда отображать нулевые значения (любого типа) из источника в место назначения?
РЕДАКТИРОВАТЬ:
https://github.com/AutoMapper/AutoMapper/blob/master/src/AutoMapper/Mappers/MapperRegistry.cs
AssignableMapper находится перед NullableMapper, который предотвращает сопоставление обнуляемых типов, если источник является нулевым.
Я добавил этот фрагмент кода, чтобы вставить NullableMapper в самом начале.
container.RegisterSingle(() =>
{
// we need to add a nullable mapper to ensure Nullable<value> gets mapped correctly
var mappers = AutoMapper.Mappers.MapperRegistry.AllMappers().ToList();
mappers.Insert(0, new AutoMapper.Mappers.NullableMapper());
return mappers.AsEnumerable();
});
Я что-то пропустил?
1 ответ
Я считаю, что это не так легко настроить. Я попробовал это:
var r = (IObjectMapper[])typeof(MappingEngine).GetField("_mappers", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(((MappingEngine)(AutoMapper.Mapper.Engine)));
Array.Resize(ref r, r.Length + 1);
Array.Copy(r, 0, r, 1, r.Length - 1);
r[0] = new NullableMapper();
typeof(MappingEngine).GetField("_mappers", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(((MappingEngine)(AutoMapper.Mapper.Engine)), r);
И даже это:
MapperRegistry.AllMappers = () => new IObjectMapper[]
{
new NullableMapper(),
new TypeMapMapper(TypeMapObjectMapperRegistry.AllMappers()),
new StringMapper(),
new FlagsEnumMapper(),
new AssignableMapper(),
new EnumMapper(),
new PrimitiveArrayMapper(),
new ArrayMapper(),
new EnumerableToDictionaryMapper(),
new DictionaryMapper(),
new ReadOnlyCollectionMapper(),
new CollectionMapper(),
new EnumerableMapper(),
new NullableSourceMapper(),
new ImplicitConversionOperatorMapper(),
new ExplicitConversionOperatorMapper(),
};
И не это помогло мне. Он по-прежнему генерирует исключения неправильного отображения с нулевым типом, когда просто должен отобразить нулевое значение в свойстве.