0

我需要访问 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 类型。

所有这些都将在控制器工厂中完成。

4

0 回答 0