ITPub博客

首页 > IT职业 > > Autofac 使用方法

Autofac 使用方法

作者:snowmanjy 时间:2019-08-16 14:48:10 0 删除 编辑

在使用Autofac实现IOC注入,参考了网上大部分的DEMO,发现很多都是先从Global全局通过RegisteredType来注入,然后在Mvc 控制器l里面通过Resolved获取实例

--注入部分

protected void Application_Start()
{
var builder = new ContainerBuilder();
SetupResolveRules(builder);

builder.RegisterControllers(Assembly.GetExecutingAssembly());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

}

--获取

private static IContainer _container;
private static void Main(string[] args)
{
InitIoC();

var lister = _container.Resolve<MPGMovieLister>();

foreach (var movie in lister.GetMPG())
{
Console.WriteLine(movie.Name);
}
Console.Read();
}


private static void InitIoC()
{
var builder = new ContainerBuilder();
builder.RegisterType<ListMovieFinder>().AsImplementedInterfaces();
builder.RegisterType<MPGMovieLister>();
_container = builder.Build();
}

以上DEMO ,Containe的作用范围都仅在当前块内且每次都先Init初始化,假如我不是在Control里面获取实例,而是想在业务逻辑层里面获取实例对象(Resolver),我应该怎样获取到IOC 容器对象( IContainer)

 

暂时想到的方法有

1.通过静态变量 但是在IIS回收的时候可能得重新Init

2.每次都重新注入Registered 初始化容器,但是感觉这样会消耗性能

 

求有优雅一点的实现方式~

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1973/viewspace-3168151/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-16

  • 博文量
    104
  • 访问量
    827