首页 > IT职业 > > Autofac 使用方法
在使用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/ ,如需转载,请注明出处,否则将追究法律责任。