获取Autofac中已注册的实例或服务 services

2021-04-03  乐帮网

autofac

查询Autofac中所有的已注册类型,代码如下:

var builder = new ContainerBuilder();
var container = builder.Build();
  var services =
                container.ComponentRegistry.Registrations.SelectMany(x => x.Services)
                    .OfType<IServiceWithType>()
                    .Select(x => x.ServiceType);

            Dictionary<string, List<Type>> assemblyNames = new Dictionary<string, List<Type>>();
            foreach (var service in services)
            {
                var assemblyFullName = service.Assembly.FullName;
                if (!assemblyNames.ContainsKey(assemblyFullName))
                {
                    assemblyNames.Add(assemblyFullName, new List<Type> {service});
                }
                else
                {
                    assemblyNames[assemblyFullName].Add(service);
                }
            }
            LogUtil.CreateLog(LogLevel.Message, $"assemblyNames.Count = {assemblyNames.Count}");

            int i = 0;
            StringBuilder stringBuilder;
            foreach (var assemblyName in assemblyNames.Keys)
            {
                stringBuilder = new StringBuilder();
                i++;
                var value = assemblyNames[assemblyName];
                stringBuilder.AppendLine($"index={i},{assemblyName} with {value.Count} registered service");
                foreach (var item in value)
                {
                    stringBuilder.AppendLine($"{item}");
                }

                LogUtil.CreateLog(LogLevel.Message, stringBuilder.ToString());
            }

原文:https://www.cnblogs.com/chucklu/p/12666825.html

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力