1

個別のプロジェクト (モジュラー アーキテクチャ) として個別の領域を持つ MVC アプリケーションがあります。これらの各プロジェクトには、インターフェイスを実装する特定のコントローラーがあります。したがって、このコードを使用して、そのインターフェイスを実装するすべてのロード済みアセンブリを取得できます...

var type = typeof(IAreaRegistration);
var types = AppDomain.CurrentDomain.GetAssemblies().ToList()
                .SelectMany(s => s.GetTypes())
                .Where(p => type.IsAssignableFrom(p))
                .Where(i => i.IsInterface == false)
                .ToList();

私の質問は、本質的にその型の新しいインスタンスをメモリにロードするActivator.CreateInstance()を使用せずに、クエリから見つかった各型でインターフェイス メソッドを実行するにはどうすればよいですか? 動作する次のコードがありますが、私が言ったように、新しいインスタンスを作成し、それが最善の方法だとは思いません。

foreach (var item in types)
{
    var cls = Activator.CreateInstance(item) as IAreaRegistration;
    // call interface members here...
}
4

0 に答える 0