私は複数の型をマップしようとしていますが、約50種類(50種類)は1対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、文化=中立、なPublicKeyToken = NULL]] - > System.Collections.Generic.IEnumerable'1 [[ConsoleApplication1.Program + AnimalVM、ConsoleApplication1、バージョン= 1.0.0.0、カルチャニュートラル、PublicKeyToken = = null]]
あなたが使用したい
。 –