VS2012 で AutoMapper を使用しています。私が使用する autoMapper メソッドのシグネチャは次のとおりです。
public static IMappingExpression<TSource, TDestination> CreateMap<TSource, TDestination>();
パラメータとして 2 つの型を受け入れ、型 #1 を型 #2 にマッピングし、型 #2 を返します。すべて同じソースから継承するクラスがたくさんあります。AutoMap インスタンスを作成しようとすると、次のことを行う必要があります。
Mapper.CreateMap<ClassOne, ClassTwo>();
ClassOne one = new ClassOne{Name="One};
ClassTwo two = Mapper.Map<ClassOne, ClassTwo>(one);
これにより、ClassOne オブジェクトのすべてのフィールドが ClassTwo オブジェクトに「マップ」されます (はい、ClassTwo には ClassOne のフィールドがいくつかあります)。Mapper 関数を呼び出して 1 つのオブジェクトを別のオブジェクトにマップする 1 つの関数をセットアップしたいのですが、同じコードで 2 つのオブジェクトの im マッピングのみを変更する多数の関数ではありません。オブジェクトで GetType() を実行し、必要な型を文字列形式で取得できます。
ClassOne one = new ClassOne();
Type t = one.GetType();
var type = t.FullName; //type is now "Generic.Collection.ClassOne"
Mapper.CreateMap<type, ClassTwo>();//this will not compile
Mapper.CreateMap<one.GetType(), ClassTwo>();//neither will this
しかし、マッパー関数に文字列を渡すことはできません。型を動的に宣言するにはどうすればよいですか?
型を宣言して使用する方法の例として AutoMapper を使用しています。私は同じことをする他の機能を持っています。だから私の質問は、動的に型を宣言するにはどうすればよいですか? - AutoMapper の使用方法ではありません。