您的位置:首页 > 其它

Autofac依赖注入框架使用

2016-08-28 09:56 225 查看
简介: Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高

控制反转和依赖注入:

控制反转 IOC(Inverse Of Control) : 简单通俗的说,就是本来创建对象的实例,由我们程序员自己创建,现在交给IOC容器来创建,所以称为控制反转。

依赖注入DI(Dependence injection) : 容器创建好实例后再注入,称为依赖注入。

主要应用: 实现各个层之间的解耦。每个层调用的都是接口,而不是具体的类. 好处就是以后需要对代码做修改的话,只需要将写好的代码编译成dll 替换原来程序中的dll,无需重新编译。 本来创建接口对象的过程由我们自己创建,利用抽象工厂模式,配合反射也可以达到解耦. 现在创建接口对象的过程由IOC容器创建.达到解耦

使用Demo: 这个Demo主要演示的就是在UI层通过Autofac来帮我们创建IBLL的实例

控制器:

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卷猫
链接:http://anneke.cn/ArticleInfo/Detial?id=4
来源:Anneke.cn

public ActionResult Index()
{
ITestBLL testBLL = Container.Resolve<ITestBLL>();
ViewBag.Name = testBLL.GetName();
return View();
}


IBLL:

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卷猫
链接:http://anneke.cn/ArticleInfo/Detial?id=4
来源:Anneke.cn

public interface ITestBLL
{
string GetName();
}


BLL:

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卷猫
链接:http://anneke.cn/ArticleInfo/Detial?id=4
来源:Anneke.cn

public class TestBLL : ITestBLL
{
public string GetName()
{
return "卷猫";
}
}


IOC容器:

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卷猫
链接:http://anneke.cn/ArticleInfo/Detial?id=4
来源:Anneke.cn

/// <summary>
/// Autofac IOC类
/// </summary>
public class Container
{
/// <summary>
/// IOC 容器
/// </summary>
public static IContainer container = null;

public static T Resolve<T>()
{
try
{
if (container == null)
{
Initialise();
}
}
catch (Exception ex)
{
throw new Exception("IOC实例化出错!" + ex.Message);
}

return container.Resolve<T>();
}

/// <summary>
/// 初始化
/// </summary>
public static void Initialise()
{
var builder = new ContainerBuilder();

//格式:builder.RegisterType<xxxx>().As<Ixxxx>().InstancePerLifetimeScope(); 可以写多个
builder.RegisterType<TestBLL>().As<ITestBLL>().InstancePerLifetimeScope();

container = builder.Build();
}
}


完整Demo:https://github.com/zhenzhenkeai/AutoFacDemo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: