autofac コンポーネント レジスタにアクセスして、特定のインターフェイスと名前に一致する登録済みの型を確認する必要があります。
この質問でこれを行う方法を見つけました
var types = scope.ComponentRegistry.Registrations
.SelectMany(r => r.Services.OfType<IServiceWithType>(), (r, s) => new { r, s })
.Where(rs => rs.s.ServiceType.Implements<T>())
.Select(rs => rs.r.Activator.LimitType);
これを内部的に実行できるように、スコープ、コンポーネント レジストリ、および登録をクラスに渡すにはどうすればよいですか。
このようにする理由は、(名前空間または具象型がない) 名前しか持たない asp.net mvc コントローラーを解決しようとしており、autofacs マルチテナンシー サポートを使用してオーバーライドできるためです。
そのため、Autofac に登録されている内容に応じて、「HomeController」のような文字列を実際の HomeController タイプに解決する必要があります。
これはすべてコントローラーファクトリーで行われます。