net core中 使用autofac,新版本 已经不支持

RT,

老的 fw 项目迁移 core 2.1,其中有一个 Instance的实现类, 大概贴一下代码:

var builder = new ContainerBuilder();
ConfigurationSettingsReader reader = new ConfigurationSettingsReader("autofac");
SectionHandler handler = reader.SectionHandler;
var element = handler.Components.FirstOrDefault(item => item.Service.Contains(typeof(T).FullName));
Autofac.IContainer container = null;

T t;
if (element == null)//配置文件中未配置,采用默认注册
{
  //此处省去一大段
}
else
{
    builder.RegisterType<T>();
    builder.RegisterModule(reader);
}
container = builder.Build();

t = container.Resolve<T>();
return t;

 

泛型T是定义在类上边的 (public class Instance<T> where T : IService),大概意图就是,如果读取到配置文件中的匹配类型,那么就用配置文件的实现类去实例化对象并返回,否则就去根据各种类名什么的去按命名规则去拼出实现类。

那么问题就是, 最新版本的Autofac 已经没有ConfigurationSettingsReader了,那么类似的方法要怎么实现,core 中 已经都是 json文件单独去定义 autofac的配置了, 或者说,我在startup 里边已经注入了实现,那么在这个工具类的程序集里边,怎么显示的去拿到 Resolve<T> 的对象呢? 这个写法是要怎么写,或者说 startup里的 container 在其他程序集中如何取到?


小唯快跑啊
浏览 899回答 1
1回答

郎朗坤

参考&nbsp;JSON/XML Configuration
打开App,查看更多内容
随时随地看视频慕课网APP