获取Autofac中所有已注册的接口实现

Dav*_*fer 6 c# autofac

我需要从一个实现特定接口IComponentContext的注册列表中获取Type.

我不想要类型的实际实例,而是Type可以获取实例的列表.

我想使用此列表在消息总线上生成订阅.

如何在Autofac中获取所有已注册的接口实现?

Dav*_*fer 13

我想出来了 -

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);
Run Code Online (Sandbox Code Playgroud)

  • 它仍然可以与最新的Autofac一起使用。 (2认同)