C# 中AutoFac使用

1、NuGet 安装AutoFac : Install-Package AutoFac
2、介绍
//面向接口编程 当项目复杂时很有必要 模块耦合严重 基于接口编程
//IOC(Inversion of Control,控制反转)容器 使用IOC容器后,不再有程序员自己new对象 而由框架帮助new对象
3、使用

 //实现类中不要有成员变量  无状态  使用单例
            ContainerBuilder build = new ContainerBuilder();
            //把UserBll 注册为IUserBll的实现类
            //build.RegisterType<UserBll>().As<IUserBll>();
            //build.RegisterType<UserBll>().AsImplementedInterfaces();
            //build.RegisterType<DogBll>().AsImplementedInterfaces();

            Assembly assembly = Assembly.Load("MyBllImpl");

            //build.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
            //自动给接口的属性   赋值 SingleInstance 单例 InstancePerDependency 每次都创建一个新的对象   默认非SingleInstance
            build.RegisterAssemblyTypes(assembly).AsImplementedInterfaces().PropertiesAutowired();

            Autofac.IContainer iContainer  = build.Build();

            //创建实现类的对象
            IUserBll iUserBll =  iContainer.Resolve<IUserBll>();
            //如果有多个实现类 
            //IEnumerable<IUserBll> userBlls =  iContainer.Resolve<IEnumerable<IUserBll>>();
            //foreach (IUserBll item in userBlls)
            //{
            //    Console.WriteLine(item.GetType());
            //    item.AddNew("333","44");
            //}

            ISchool  s = iContainer.Resolve<ISchool>();
            s.Fangxue();
            //IDogBll DogBll = iContainer.Resolve<IDogBll>();
            //iUserBll.AddNew("张三", "123");
            //DogBll.Brak();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值