AutoMapper изменяет типы свойств с помощью настраиваемого logi c, а затем выполняет сопоставление для новых типов. - PullRequest
0 голосов
/ 04 августа 2020

У меня есть специальный тип, называемый Any, который может содержать в себе значения любого типа (например, тип объекта)

Учтите следующее:

class ADto
{
  public Any Foo { get; set; } // Foo has BDto inside of it
}

class A
{
  public object Foo { get; set; } // Foo has B inside of it
}

class BDto
{
  public string Bar { get; set; }
}

class B
{
  public string Bar { get; set; }
}

Я настроил сопоставления вот так:

cfg.CreateMap<ADto, A>();
cfg.CreateMap<BDto, B>();

Я использую настраиваемый logi c, чтобы узнать, какой тип на самом деле находится в ADto.Foo (это BDto).

Если я использую настраиваемый TypeConverter:

public class AnyToObjectTypeConverter : ITypeConverter<Any, object>
{
    public object Convert(Any source, object destination, ResolutionContext context)
{
  var underlyingType = FindUnderlyingType(source); //which in case is typeof(ADto)
  // here I need to map from ADto => A, I would like AutoMapper to do this mapping since I configured this mapping in configuration, but how?
???
}
}

Тогда как я могу выполнить сопоставление BDto с B для свойства Foo, как обычно?

У меня есть только дополнительный шаг в моем сопоставлении, который Мне нужно найти реальный базовый тип!

...