Я пытаюсь отобразить исходную структуру, где некоторые свойства обернуты в универсальный тип NonNull<T>
(из библиотеки GraphQL.Conventions).
На практике я хочу использовать AutoMapper для сопоставления структуры:
public class SourceA
{
public NonNull<SourceB> Sub { get; set; }
public string Username { get; set; }
}
public class SourceB
{
public NonNull<string> Address { get; set; }
}
К пункту назначения, подобному этому:
public class DestA
{
public DestB Sub { get; set; }
public string Username { get; set; }
}
public class DestB
{
public string Address { get; set; }
}
Это моя установка:
var source = new NonNull<SourceA>(new SourceA
{
Username = "Test user",
Sub = new NonNull<SourceB>(new SourceB
{
Address = "Test Address"
})
});
var mapper = new MapperConfiguration(cfg =>
{
cfg.CreateMap<SourceA, DestA>();
cfg.CreateMap<NonNull<SourceA>, DestA>()
.ConvertUsing((src, dst, ctx) =>
{
ctx.Mapper.Map(src.Value, dst);
return dst;
});
cfg.CreateMap<SourceB, DestB>();
cfg.CreateMap<NonNull<SourceB>, SourceB>()
.ConvertUsing((src, dst, ctx) =>
{
ctx.Mapper.Map(src.Value, dst);
return dst;
});
}).CreateMapper();
var dest = mapper.Map<DestA>(source);
Вышеуказанная установка является ближайшей, которую я мог получить, ноон по-прежнему выдает это исключение:
Типы сопоставления ошибок.
Типы сопоставления: SourceA -> DestA MappingTest.Program + SourceA -> MappingTest.Program + DestA
Тип Конфигурация карты: SourceA -> DestA MappingTest.Program + SourceA -> MappingTest.Program + DestA
Назначение Участник: Sub
Любой знает простой способ сделать это (сохранение вИмейте в виду, что я должен иметь возможность автоматически генерировать конфигурацию отображения, используя шаблоны T4, если это вообще имеет значение)?