我需要访问 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 类型。
所有这些都将在控制器工厂中完成。