私は ioc に登録された任意のインターフェースの暫定メソッドを実行するコンポーネントに取り組んでおり、実行の瞬間はさまざまなトリガーに依存します。実行するアクションをデータベースに保存できる必要があるため、必要になるまでメソッド名、タイプ、パラメーターのリスト (BLOB にシリアル化) をデータベースに保存しています。
トリガーが発生したら、タイプのインスタンスでメソッドを実行する必要があります。依存性注入を使用しているため、インターフェイス名がデータベースに保存されています(形式"Namespace.IInterface, AssemblyName"
)
Resolve<IInterface>()
ioc コンテナーでメソッドを実行するには、そのインスタンスが必要Type
です。
Assembly assembly = System.Reflection.Assembly.Load(assemblyName);
Type service = assembly.GetType(typeName);
object instance = IOCContainer.Resolve(service);
私の質問は次のとおりです。
- 含まれているアセンブリが既にアプリ ドメインに読み込まれていることが確実な場合、その名前から Type のインスタンスを取得するより良い方法はありますか? (単純に試してみまし
Type.Load(typeName)
たが、nullになりました) - 問題のアセンブリが既に読み込まれている場合、CLR はそのプロセスを最適化しますか (既に読み込まれているものを使用します)、またはアセンブリのリストを手動でキャッシュして、同じアセンブリを何度も繰り返し読み込むことによるパフォーマンスへの影響を防ぐ必要がありますか?