我試圖映射多種類型,約50到其他類型(其中50)他們是1對一,但我想從接口映射到具體類型。映射多個派生類型
相關代碼例如:
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,版本= 1.0.0.0,文化=中性公鑰= NULL] - > System.Collections.Generic.IEnumerable'1 [ConsoleApplication1.Program + AnimalVM,ConsoleApplication1,版本= 1.0.0.0,文化=中立,公鑰=空]
更新的問題,但任何人在這個方面的經驗會明白的問題。 –