在Autofac DI中记录注册服务

问题描述 投票:1回答:1

我有一个使用Autofac的控制台应用程序。如何以编程方式访问容器中的注册信息?这是一个示例输出(它是针对Unity框架的):

Container has 14 Registrations:
+ IUnityContainer '[default]' Container
+ StorageAccount '[default]' ContainerControlled
+ IRetryPolicyFactory '[default]' ContainerControlled
+ IDataTable`1<SurveyRow> -> DataTable`1<SurveyRow> '[default]' Transient
+ IDataTable`1<QuestionRow> -> DataTable`1<QuestionRow> '[default]' Transient
+ IMessageQueue`1<SurveyAnswerStoredMessage> ->
MessageQueue`1<SurveyAnswerStoredMessage> 'Standard' Transient
+ IMessageQueue`1<SurveyAnswerStoredMessage> ->
MessageQueue`1<SurveyAnswerStoredMessage> 'Premium' Transient
...
c# autofac
1个回答
1
投票

您绝对可以使用Autofac的容器查询已注册的类型。

例:

注意:我在下面的示例代码中为ArrayList注册IList

containerBuilder.RegisterType<ArrayList>().As<IList>();

var container = containerBuilder.Build();
var componentRegistryRegistrations = container.ComponentRegistry.Registrations;
foreach (var componentRegistryRegistration in componentRegistryRegistrations) {
    Console.WriteLine(componentRegistryRegistration.Activator.LimitType);
}

代码将在屏幕上打印:

Autofac.Core.Lifetime.LifetimeScope
System.Collections.ArrayList
© www.soinside.com 2019 - 2024. All rights reserved.