プラットフォーム:C#2.0 WinForms
送信するタイプに応じて特定のデータマッパーのインスタンス化を提供するファクトリクラスがあります。コードは次のとおりです。
public static IDataMapper<T> GetMapper<T>() where T: IDto
{
Type mapperType = MapperLocator.GetMapper(typeof(T));
return (IDataMapper<T>)mapperType.Assembly.CreateInstance(mapperType.FullName);
}
DynamicProxy2を使用して、DTOオブジェクトへのメソッド呼び出しをインターセプトしています。私のインターセプトメソッドでは、Invocation.TargetTypeの型を使用して上記のファクトリを呼び出そうとしています。ただし、これは例外を除いて戻ってきます。
タイプまたは名前空間名'invocation'が見つかりませんでした。
明らかにこれは、ジェネリックメソッドの呼び出しは、コンパイル時に理解していることから明示的に型を知る必要があるためです。明らかに、この場合はそれを行うことができず、すべてのDTOオブジェクトに対してswitchステートメントを実行することは絶対にありません。
それで、皆さんは戦略を提案したり、私が間違っていることを指摘したりできますか?私はこれを可能な限り一般的にして、すべてのオブジェクトと新しいオブジェクトに適合し、他のプロジェクトへのコードの移植性を実現できるようにしようとしています。
前もって感謝します!