快速了解IOC的几种姿势
一、首先我们了解IOC如何注入的几种姿势
- 构造函数注入(Constructor Injection)
 
Ioc容器会智能的选择和调用合适的构造函数以创建依赖的对象。如果被选择的构造函数具有相应的参数,Ioc容器在调用构造函数之前解析注册的依赖关系并自行初始化获得相应的参数对象。
- 属性注入(Property Injection)
 
通过[Dependency]标记为依赖属性,在创建对象时,依赖属性对象会被IOC容器自行获取相应的对象。
- 方法注入(Method Injection)
 
通过[InjectionMethod]标记此方法为依赖方法,此方法会自动被调用,方法所需参数IOC会自动获取。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.Unity; namespace MyIoc
{
public interface IA{} public interface IB{} public interface IC{} public interface ID{}
public interface IE{}
public class A : IA
{
public IB B { get; set; } [Dependency]
public IC C { get; set; } public ID D { get; set; } public IE E { get; set; } public A(IB b)
{
this.B = b;
} [InjectionMethod]
public void Initialize(ID d)
{
this.D = d;
Console.WriteLine("初始化方法正在调用");
}
} public class B : IB{} public class C : IC{} public class D : ID{}
public class E : IE{}
}
static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
UnityConfigurationSection configuration = ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection;
configuration.Configure(container, "defaultContainer");
var a = container.Resolve<IA>() as A;
Console.WriteLine("B(构造函数注入)是否有值:{0}",a.B==null?"没有":"有");
Console.WriteLine("C(属性注入)是否有值:{0}", a.C == null ? "没有" : "有");
Console.WriteLine("D(方法注入)是否有值:{0}", a.D == null ? "没有" : "有");
Console.Read(); }
运行结果:

快速了解IOC的几种姿势的更多相关文章
- 两个文件去重的N种姿势
		
最近利用shell帮公司优化挖掘关键词的流程,用shell替代了多个环节的操作,极大提高了工作效率. shell在文本处理上确有极大优势,比如多文本合并.去重等,但是最近遇到了一个难搞的问题,即两个大 ...
 - 又拍云张聪:OpenResty 动态流控的几种姿势
		
2019 年 1 月 12 日,由又拍云.OpenResty 中国社区主办的 OpenResty × Open Talk 全国巡回沙龙·深圳站圆满结束,又拍云首席架构师张聪在活动上做了< Ope ...
 - SpringBoot系列教程web篇Servlet 注册的四种姿势
		
原文: 191122-SpringBoot系列教程web篇Servlet 注册的四种姿势 前面介绍了 java web 三要素中 filter 的使用指南与常见的易错事项,接下来我们来看一下 Serv ...
 - 【SSH系列】深入浅出spring IOC中三种依赖注入方式
		
spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控 ...
 - 补习系列(7)-springboot 实现拦截的五种姿势
		
目录 简介 姿势一.使用 Filter 接口 1. 注册 FilterRegistrationBean 2. @WebFilter 注解 姿势二.HanlderInterceptor 姿势三.@Exc ...
 - 快速理解VirtualBox的四种网络连接方式
		
VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...
 - python打开文件的N种姿势
		
# python打开文件的N种姿势 print('[1]使用open()函数+简单for循环') f1 = open('python.txt') for line in f1: print(line. ...
 - spring IOC中四种依赖注入方式
		
在spring ioc中有三种依赖注入,分别是:https://blog.csdn.net/u010800201/article/details/72674420 a.接口注入:b.setter方法注 ...
 - [转]地图投影的N种姿势
		
此处直接给出原文链接: 1.地图投影的N种姿势 2.GIS理论(墨卡托投影.地理坐标系.地面分辨率.地图比例尺.Bing Maps Tile System)
 
随机推荐
- jQuery  表格删除,添加行
			
var colsNum = 4; 1,$(document),ready(function () { $.("#id1").parent().after('<tr class ...
 - 【腾讯云的1001种玩法】腾讯云搭建DiscuzX论坛
			
版权声明:本文由艾可德原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/506828001481866457 来源:腾云阁 h ...
 - USR-BLE101配置
			
新买来的模块,默认为slave模式,波特率57600,8位数据位,无检验位,1位停止位. 发送+++a,进入命令模式. 1.设置模块名称 AT+NAME=BT_Shining 2.设置发射功率(最大功 ...
 - (44) odoo中的WebService
			
* 前言 erp系统会和其它系统进行对接,这时就要接口,官方给出的是两解决方案 * XML-RPCLibrary 举例 import xmlrpclib root = 'http:// ...
 - 补PSP进度(10.28-11.3)
			
本周PSP进度 10月31号 内容 开始时间 结束时间 打断时间 净时间 看蛋白质相互作用论文 8:40 10:35 约12m 103m 分析约跑功能 13:20 13:55 0 35m 练习VSL2 ...
 - Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
			
下载jar,导入到maven中cmd中输入:mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=1 ...
 - css利用padding生成图标
			
先插入HTML结构: <div class="line-three"></div> <div class="circle"> ...
 - 微信JS SDK Demo 官方案例[转]
			
摘要: 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用 ...
 - 使用VC6.0创建和运行C程序的方法
			
使用VC6.0可以有快捷的方式创建C程序,对于初学者,建议按照如下方式创建.先创建一个工作区,然后创建工程,最后在工程中创建源文件文件.理解工作区.工程与文件之间的关系.
 - DEVEXPRESS控件使用技巧记录-GRIDCONTROL
			
1. 存在父子表的时候,只允许父表的一条记录展开,其他记录都收起 方法:Feature Browser -> Master-Detail -> behavior -> AllowOn ...