控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来降低代码之间的耦合度。
别外:依赖注入(Dependency Injection,简称DI)
IoC常用框架:Unity、Autofac
1.Unity实现案例
注:需要在NuGet包管理器中添加Unity并安装
using IOC_DEMO.DAL;
using IOC_DEMO.IDAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IOC_DEMO
{
class Program
{
static void Main(string[] args)
{
IUnityContainer unityContainer=new UnityContainer();//创建IOC容器
unityContainer.RegisterType<IOracleDAL,OralceDAL>();//注册实现类
unityContainer.RegisterType<ISqlServerDAL,SqlServerDAL>();//注册实现类
//调用容器中的指定的类型
var db=unityContainer.Resolve<ISqlServerDAL>();
db.Login(new Models.UserInfo(){Account="张三",Password="123456"})
}
}
}
2.Unity实现案例
注:需要在NuGet包管理器中添加autofac并安装需要对应版本
public class IoCAutoFac
{
static IContainer container;//定义Ioc容器接口null
static IoCAutoFac()
{
ContainerBuilder containerBuilder=new ContainerBuilder();
containerBuilder.RegisterType<UserManager>().As<IUserManager>();
container=containerBuilder.Build();//生成
}
public static T Resolve<T>()
{
T t=container.Resolve<T>();
return t;
}
}