C# .net mvc 依赖注入、控制反转、Ioc、Autoface(草稿)
2017-05-09 09:36
537 查看
C# .net mvc 依赖注入、控制反转、Ioc、Autoface
概念:控制反转:就是把依赖的创建移到使用这些依赖的类的外部
我想先看下面例子:
FoodServies类中有一个方法EatFood
public class FoodServies { public void EatFood() { Console.WriteLine("吃东西"); } }
Systemdo类中需要调用EatFood,
public class Systemdo { FoodServies food; //构造函数,实例化的时候调用 public Systemdo() { food = new FoodServies(); } public void doSomething() { food.EatFood(); } }
Systemdo依赖FoodServies类,当一个组件依赖另外一个组件时,我们称其为耦合。
为了降低组件直接的耦合程度,一般采用独立但相关的步骤:
1.在两块代码之间引入抽象层,我们通常用的接口。
//在两块代码之间引入抽象层,我们通常用的接口 public interface IFoodServies { public void EatFood(); } public class FoodServies : IFoodServies { public void EatFood() { Console.WriteLine("吃东西"); } } public class Systemdo { IFoodServies food; //构造函数,实例化的时候调用 public Systemdo() { food = new FoodServies(); } public void doSomething() { food.EatFood(); } }
2.把选择抽象实现的责任移到消费类的外部。
需要把FoodServies类的创建移到Systemdo类的外面
把依赖的创建移到使用这些依赖的类的外部,这称为控制反转模式,之所以这样命名,是因为反转的是依赖的创建,正因为如此,才消除了消费者类对依赖创建的控制。
实现
1.服务定位器(不推荐)
public interface IFoodServiesLocator { object GetFoodServies(Type servicrType); } public static class ServiesLocatorExtensions { public static TService GetFoodServies<TService>(this IFoodServiesLocator locator) { return (TService)locator.GetFoodServies(typeof(TService)); } }
public interface IFoodServies { void EatFood(); }
public class FoodServies : IFoodServies { public void EatFood() { Console.WriteLine("吃东西"); } }
public class Systemdo { IFoodServies food; // public Systemdo(IFoodServiesLocator locator) { food = locator.GetFoodServies<IFoodServies>(); } public void doSomething() { food.EatFood(); } }
调用
这里写代码片
相关文章推荐
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- 搞定.NET MVC IOC控制反转,依赖注入
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
- C#设计模式之控制反转即依赖注入-Spring.NET
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
- Spring_mvc ioc/DI 控制反转与依赖注入
- Spring.Net-DI依赖注入和Ioc控制反转
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用
- Spring.net 控制反转(IOC)依赖注入(DI)的使用 以及Config文件的配置
- 第二章 深入探讨控制反转(Ioc)和依赖注入(DI)
- 控制反转(IoC)与依赖注入(DI)
- 解构控制反转(IoC)和依赖注入(DI)
- 解构控制反转(IoC)和依赖注入(DI)
- Spring框架中IOC控制反转和DI依赖注入区别
- 控制反转IOC之实现--依赖注入--依赖查找+依赖拖拽
- Ninject IOC容器 依赖注入 ,控制反转。
- 控制反转IOC和依赖注入DI
- 控制反转(IoC)和依赖注入(DI)
- 依赖注入 控制反转Ioc