ObjectFactory
アセンブリのパスとそのアセンブリ内の型の名前を指定すると、リフレクションを使用して同じ型のインスタンスを返すようなものを書き込もうとしています。いくつかの異なるアセンブリの型に対してこの操作を繰り返し行う必要があるためAssembly.LoadFrom
、特定の型の新しいインスタンスが必要になるたびに使用する必要がありますか?それとも、結果のAssembly
オブジェクトと型作成メソッドへのデリゲートをキャッシュする必要がありますか?
2 に答える
いいえ、設計上の決定によるものでなければ、必要ありません。メモリ内アセンブリへの参照をアセンブリ型オブジェクト内に保持できます。
毎回呼び出すAssembly.LoadFrom
のは時間がかかります。
独自のファクトリ クラスを構築する道をたどりたい場合Type
は、アクティブ化しているクラスのインスタンスをキャッシュすることをお勧めします。
さらに良いことに、依存性注入フレームワークを検討することをお勧めします。依存性注入 (DI) に慣れていない場合は、http://en.wikipedia.org/wiki/Dependency_injectionを参照してください。
ほとんどのフレームワークは、少なくともオブジェクト ファクトリ、型キャッシュを提供し、コンストラクターの依存関係を自動的に解決します。車輪を再発明する必要がなく、必要に応じてすべてのアプリケーションで同じ方法論を再利用できるため、これは素晴らしいことです。
オブジェクト ファクトリを構築するプロセスを意図的に実行している場合は、これらのオープン ソースの実装を確認することをお勧めします。これらは、DI がうまく機能する方法の優れた例だからです。
Unity アプリケーション ブロック - http://unity.codeplex.com/
StructureMap - http://structuremap.sourceforge.net/Default.htm
CastleWindsor - http://www.castleproject.org/container/index.html
Ninject - http://ninject.org/