本文只适合初步接触 autoafc 的小白,大佬勿喷。

autofac是一种很轻量的一个依赖注入容器

暂时先说一下手动注入的方式(因为使用自动注入遇到了坑,暂时先写一下手动注入)

1.先定义接口

    public interface IAccountService:IDependency
{
/// <summary>
/// 获取账户信息
/// </summary>
/// <param name="accountName">账户名</param>
/// <returns>账户信息</returns>
AccountBases GetAccount(string accountName);
}

此处的 IDependency 仅仅为一个空接口

2.接口的实现

    public class AccountService : BaseService, IAccountService
{
public AccountBases GetAccount(string accountName)
{
///实现代码,CRUD等等
}
}

3.控制器的使用

        private IAccountService AcountService;
///构造函数
public LoginController(IAccountService accountService)
{
AcountService = accountService;
}
public ActionResult Login(AccountBases loginInfo)
{
......... AccountBases entity = AcountService.GetAccount(loginInfo.AccountName);
.........
}

代码中的 AcountService.GetAccount(loginInfo.AccountName) 就实现了依赖注入,传统的写法 为

AcountService as = new AcountService();
AccountBases entity  = as.GetAccount(loginInfo.AccountName);

两者相比较依赖注入会更方便一点,除了方便,依赖注入的作用主要是为了降低系统的耦合。
4.核心:autofac,要使用autofac就得先去引入他的nuget包,这里就不说明了,不会的可以百度。
首先:新建一个类来初始化和注入实现
public class AutofacConfig
{
/// <summary>
/// 初始化
/// </summary>
public static void Initialise()
{
var builder = RegisterService();
DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build()));
} /// <summary>
/// 注入实现
/// </summary>
/// <returns></returns>
private static ContainerBuilder RegisterService()
{
var builder = new ContainerBuilder();
builder.RegisterType<AccountService>().As<IAccountService>();
builder.RegisterType<BusinessPaymentsService>().As<IBusinessPaymentsService>();
builder.RegisterType<ClearAllService>().As<IClearAllService>();
builder.RegisterType<MemberService>().As<IMemberService>();
builder.RegisterType<InInventoryDetailsService>().As<IInInventoryDetailsService>(); ////扫描IService和Service相关的程序集
var assemblys = AppDomain.CurrentDomain.GetAssemblies().ToList(); //控制器注入
builder.RegisterControllers(assemblys.ToArray()); return builder;
}
}
使用 builder.RegisterType 来手动注入你想注入的接口

最后在Global文件中配置就完成了
        protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); //autofac依赖注入
AutofacConfig.Initialise(); Database.SetInitializer<ClearContext>(null);
}

autofac的手动注入到这就完成了。

 
 

Autofac--手动依赖注入的更多相关文章

  1. NopCommerce使用Autofac实现依赖注入

    NopCommerce的依赖注入是用的AutoFac组件,这个组件在nuget可以获取,而IOC反转控制常见的实现手段之一就是DI依赖注入,而依赖注入的方式通常有:接口注入.Setter注入和构造函数 ...

  2. Autofac之依赖注入

    这里主要学习一下Autofac的依赖注入方式 默认构造函数注入 class A { public B _b; public A() { } public A(B b) { this._b = b; } ...

  3. Web API(六):使用Autofac实现依赖注入

    在这一篇文章将会讲解如何在Web API2中使用Autofac实现依赖注入. 一.创建实体类库 1.创建单独实体类 创建DI.Entity类库,用来存放所有的实体类,新建用户实体类,其结构如下: us ...

  4. NET Core源代码通过Autofac实现依赖注入

    查看.NET Core源代码通过Autofac实现依赖注入到Controller属性   阅读目录 一.前言 二.使用Autofac 三.最后 回到目录 一.前言 在之前的文章[ASP.NET Cor ...

  5. Autofac 泛型依赖注入

    using Autofac;using Autofac.Extensions.DependencyInjection;using Hangfire;using Microsoft.AspNetCore ...

  6. 五:.net core(.NET 6)使用Autofac实现依赖注入

    Autofac的简单使用: 由于将来可能引用很多包,为了保持统一队形,我们再新建一个类库项目Wsk.Core.Package,当做包的引用集合: 删掉Class1,把Wsk.Core.Wsk.Core ...

  7. 查看.NET Core源代码通过Autofac实现依赖注入到Controller属性

    一.前言 在之前的文章[ASP.NET Core 整合Autofac和Castle实现自动AOP拦截]中,我们讲过除了ASP.NETCore自带的IOC容器外,如何使用Autofac来接管IServi ...

  8. 【AutoFac】依赖注入和控制反转的使用

    在开始之前首先解释一下我认为的依赖注入和控制反转的意思.(新手理解,哪里说得不正确还请指正和见谅) 控制反转:我们向IOC容器发出获取一个对象实例的一个请求,IOC容器便把这个对象实例“注入”到我们的 ...

  9. WebAPi使用Autofac实现依赖注入

    WebAPi依赖注入  使用记录 笔记 1.NuGet包安装 2.控制器加入构造函数 3.Global.asax  ----Application_Start 应用程序启动时 using Autofa ...

  10. 转 Autofac怎么依赖注入ASP.NET MVC5类的静态方法

    之前我有介绍过怎么在ASP.NET mvc5中实现的Controller的依赖注入.一般是通过Contrller的构造函数的参数或者属性来注入,但是这有一个共同点就是调用这个类的方法一般都是实例方法, ...

随机推荐

  1. telerik自定义皮肤的制作及用法

    1. 打开telerik 官网 http://stylebuilder.telerik.com/ 2. 选择一个皮肤做为基础皮肤,并选择要制作的控件,并新取一个名字.比如选择皮肤Silk为基础皮肤,新 ...

  2. Android学习之ViewPager

     1.定义 ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view.其中,android.support.v4是谷歌公司为了解决当前版本碎片化的问题,从而提供的一 ...

  3. UIVisualEffectView(高斯模糊效果)

    ///高斯模糊. UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; tempView. ...

  4. apache测试网页执行效率

    apache软件下有一个测试网页访问速度的工具ab.exe,位于apache的bin目录下,windows下使用命令行进入bin目录,执行ab.exe -n 10000 -c 10 http://12 ...

  5. 算法(Algorithm)

    算法就是"把解决问题的步骤无一遗漏地用文字或图表示出来". 在解决问题的步骤中,有了与直觉相关的因素,就不是算法了.既然不是算法,也就不能用程序表示了.

  6. Java 日期加减

    import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; public class Test ...

  7. java的几种定时任务

    本篇博文主要是讲述2.x 版本的quartz下的实现方案,1.x 版本的实现方式大致原理一致,但是具体的实现方式有些不一致,具体体现在获取  scheduler 这个类的方式上有些不同,这里不作过多的 ...

  8. 【JS深入学习】——事件代理/事件委托

    事件代理/事件委托(event delegation) 需求一:当一个div内部有多个事件发生,给每个元素逐个添加事件十分麻烦... 需求二:在项目中我们常常需要动态的添加元素,不可避免的需要为那些未 ...

  9. Java 反射机制系列

    http://www.cnblogs.com/KingIceMou/category/1034898.html

  10. day 65 crm(2) admin源码解析,以及简单的仿造admin组件

    前情提要: crm中的admin组件重写. 一:admin的autodiscover 作用:实现扫面该项目中的所有的admin 1:执行顺序-> 按照注册的顺序执行 二:单例模式 1:普通案例的 ...