如何获取 Autofac 中已注册服务的列表

whu*_*nle 0 autofac

在Microsoft.Extensions.DependencyInjection中,我可以:

        public static IServiceCollection BuildAopProxy(this IServiceCollection service)
        {
            foreach (ServiceDescriptor item in service)
            {}
        }
Run Code Online (Sandbox Code Playgroud)

如何获取 Autofac 中注册的组件?

Kaz*_*zar 5

所有注册的集合可以在ComponentRegistry容器和任何嵌套范围中找到:

var builder = new ContainerBuilder();

builder.RegisterType<MyType>();

var container = builder.Build();

// Here is the list you want.
container.ComponentRegistry.Registrations;
Run Code Online (Sandbox Code Playgroud)

如果您实际上想要解析特定服务的所有提供者,您可以解析IEnumerable<TService>

var builder = new ContainerBuilder();

// Two implementations of the same service.
builder.RegisterType<MyTypeA>().As<IService1>();
builder.RegisterType<MyTypeB>().As<IService1>();

var container = builder.Build();

// This will return a set with 2 items.
container.Resolve<IEnumerable<IService1>>();
Run Code Online (Sandbox Code Playgroud)