Я пытаюсь отобразить несколько типов, около 50 для других типов (50 из них), они от одного до одного, но я хочу отобразить из интерфейса в конкретный тип.Карта нескольких производных типов
Соответствующий пример кода:
using AutoMapper;
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
internal class Program
{
public interface IAnimalBO { }
public interface IBearBO : IAnimalBO { }
public interface ITigerBO : IAnimalBO { }
public static void Main()
{
var config = new MapperConfiguration(cfg =>
{
// Base class mapping..
cfg.CreateMap<IAnimalBO, AnimalVM>();
cfg.CreateMap<ITigerBO, TigerVM>();
cfg.CreateMap<IBearBO, BearVM>();
});
var mapper = config.CreateMapper();
// Configure AutoMapper
var businessObjects = new List<IAnimalBO>
{
new TigerBO(),
new BearBO()
};
var results = mapper.Map<IEnumerable<AnimalVM>>(businessObjects);
foreach (var result in results)
{
Console.WriteLine(result.GetType().Name);
}
Console.ReadKey();
}
public class AnimalVM { }
public class BearBO : IBearBO { }
public class BearVM : AnimalVM { }
public class TigerBO : ITigerBO { }
public class TigerVM : AnimalVM { }
}
}
Ожидаемый результат должен быть:
TigerVM
BearVM
но фактический выход:
AnimalVM
AnimalVM
Я не уверен, как настроить automapper для отображения этих типов.
Если предаю отображение базовой линии:
// Base class mapping..
// cfg.CreateMap<IAnimalBO, AnimalVM>();
тогда я получаю следующее исключение:
типы отображения ошибок.
типы карт:
List'1 -> IEnumerable'1 System.Collections.Generic.List'1 [[ConsoleApplication1.Program + IAnimalBO, ConsoleApplication1, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = NULL]] -> System.Collections.Generic.IEnumerable'1 [[ConsoleApplication1.Program + AnimalVM, ConsoleApplication1, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = NULL]]
Обновленный вопрос, хотя любой человек с любым опытом в этом бы понять вопрос. –