一、首先我们了解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的几种姿势的更多相关文章

  1. 两个文件去重的N种姿势

    最近利用shell帮公司优化挖掘关键词的流程,用shell替代了多个环节的操作,极大提高了工作效率. shell在文本处理上确有极大优势,比如多文本合并.去重等,但是最近遇到了一个难搞的问题,即两个大 ...

  2. 又拍云张聪:OpenResty 动态流控的几种姿势

    2019 年 1 月 12 日,由又拍云.OpenResty 中国社区主办的 OpenResty × Open Talk 全国巡回沙龙·深圳站圆满结束,又拍云首席架构师张聪在活动上做了< Ope ...

  3. SpringBoot系列教程web篇Servlet 注册的四种姿势

    原文: 191122-SpringBoot系列教程web篇Servlet 注册的四种姿势 前面介绍了 java web 三要素中 filter 的使用指南与常见的易错事项,接下来我们来看一下 Serv ...

  4. 【SSH系列】深入浅出spring IOC中三种依赖注入方式

    spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控 ...

  5. 补习系列(7)-springboot 实现拦截的五种姿势

    目录 简介 姿势一.使用 Filter 接口 1. 注册 FilterRegistrationBean 2. @WebFilter 注解 姿势二.HanlderInterceptor 姿势三.@Exc ...

  6. 快速理解VirtualBox的四种网络连接方式

    VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...

  7. python打开文件的N种姿势

    # python打开文件的N种姿势 print('[1]使用open()函数+简单for循环') f1 = open('python.txt') for line in f1: print(line. ...

  8. spring IOC中四种依赖注入方式

    在spring ioc中有三种依赖注入,分别是:https://blog.csdn.net/u010800201/article/details/72674420 a.接口注入:b.setter方法注 ...

  9. [转]地图投影的N种姿势

    此处直接给出原文链接: 1.地图投影的N种姿势 2.GIS理论(墨卡托投影.地理坐标系.地面分辨率.地图比例尺.Bing Maps Tile System)

随机推荐

  1. tcpdump捕捉样例

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  2. AES,RSA对称加密和非对称加密

    1.关于RSA加密机制:是非对称加密方式,两个钥,公钥和私钥,公钥用于加密数据,可以分享给其他用户,私钥可以用于解密用公钥加密的数据,关于安全问题是公钥泄露不会影响安全问题,公钥与私钥是一一对应的关系 ...

  3. [WPF]DataGridHyperlinkColumn网址过长TextTrimming无效

    <DataGridHyperlinkColumn Binding="{Binding source}" Header="来源"> <DataG ...

  4. spring使用Email邮件系统

    1.提供邮件信息发送接收,附件绑定功能. 1.配置spring-email.xml文件 <context:property-placeholder location="classpat ...

  5. 手机版web相关meta配置

    若页面需默认用ie兼容内核,增加标签: 若页面需默认用ie标准内核,增加标签: --> 页面标题

  6. request和session作用域的意义

    1.简单说 page指当前页面.在一个jsp页面里有效 ,page里的变量没法从index.jsp传递到test.jsp.只要页面跳转了,它们就不见了.2.request 指从http请求到服务器处理 ...

  7. Java split()用法

    特殊情况有 * ^ : | . \ 一.单个符号作为分隔符  String address="上海\上海市|闵行区\吴中路"; String[] splitAddress=addr ...

  8. php案列分享

    <?php function GetfourStr($len) { $chars_array = array( "0", "1", "2&quo ...

  9. 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, 写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们 ...

  10. markdown语法书

    因为初用markdown,所以对它的语法还不是很熟悉.喜欢简书的风格,特地拷贝了一份markdown语法手册,可以实现效果立显. http://www.jianshu.com/writer#/note ...