首页 新闻 搜索 专区 学院

net core中 使用autofac,新版本 已经不支持 ConfigurationSettingsReader,如何替代老代码

0
悬赏园豆:20 [已解决问题] 解决于 2018-06-29 15:08

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 在其他程序集中如何取到?

死神的背影的主页 死神的背影 | 小虾三级 | 园豆:660
提问于:2018-06-11 18:36
< >
分享
最佳答案
0
收获园豆:20
dudu | 高人七级 |园豆:37797 | 2018-06-11 19:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册