2013-08-08 6 views
10

私はAutomapperをしばらく使っていますが、とてもうまく動作します。Automapper.Mapperから宛先タイプを取得

Mapper.CreateMap<Models.MyModel,Entities.MyEntity>(); 

どのような方法があり、typeof(Entities.MyEntity)を返しますtypeof(Models.MyModel)を提供する任意の方法: 私は、次のマッピングを持っていますか?

答えて

9

Mapper.GetAllTypeMaps()メソッドを使用して登録済みのTypeMap(発信元と宛先のタイプのペアおよびその他のマッピング関連情報を格納するためのオートマッパーのタイプ)をすべて取得できます。タイプマップを使用して

あなたがソースの種類を検索することができます:

var typeMap = Mapper.Configuration.ResolveTypemap(
    typeof(Models.MyModel), //source type 
    typeof(Entities.MyEntity) //destination type 
); 
var destinationType = typeMap.DestinationType; 

[Test] 
public void Test() 
{ 
    Mapper.CreateMap<Models.MyModel, Entities.MyEntity>(); 
    var destination = Mapper.GetAllTypeMaps() 
          .First(t => t.SourceType == typeof(Models.MyModel)); 
    Assert.AreEqual(typeof (Entities.MyEntity), destination.DestinationType); 
} 
1

受け入れ答えよりも少しきれいで別の解決策は、AutoMapperのResolveTypeMap機能を使用することですさらに、宛先タイプ(ここではEntities.MyEntity)として基本タイプを渡すことができ、automapperは派生タイプを返します。

関連する問題