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

时间:2020-06-15 11:10:18

标签: autofac

Microsoft.Extensions.DependencyInjection 中,我可以:

const treeLayout = tree().size([window.innerWidth -500, window.innerHeight])
    .separation(function(a, b) { return a.parent == b.parent ? 1 : 1; });

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

1 个答案:

答案 0 :(得分:2)

所有注册的集合都可以在ComponentRegistry中找到,可以在容器和任何嵌套作用域中找到:

var builder = new ContainerBuilder();

builder.RegisterType<MyType>();

var container = builder.Build();

// Here is the list you want.
container.ComponentRegistry.Registrations;

如果您实际上想解决特定服务的所有提供者,则只需解决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>>();