Attribute(特性)=>就是对类,方法,字段的自定义属性的基类。可以利用Attribute对类,方法等进行自定义描述,方便区分。

既然如此,那我们就可以那些需要注入IOC容器和不需要注入IOC容器的服务类就可以一目了然的区分出来,从而确保系统初始化的时候,注入容器的不影响性能。

这里主要有2个封装类:特性描述类(AttributeInfo)和依赖特性类(DependencyAttribute)

1.AttributeInfo<T>

    public class AttributeInfo<T> {

        /// <summary>
/// 一个属性检索类型描述符
/// </summary>
public T Attribute { get; set; } /// <summary>
/// 特定类型特性描述
/// </summary>
public Type DecorateType { get; set; }
}

2.DependencyAttribute

    [AttributeUsage(AttributeTargets.Class,AllowMultiple = true)]
public class DependencyAttribute:Attribute {
public DependencyAttribute(ComponentLifeStyle lifeStyle = ComponentLifeStyle.Transient)
{
this.LiftStyle = lifeStyle;
} public DependencyAttribute(Type serviceType, ComponentLifeStyle lifeStyle = ComponentLifeStyle.Transient)
{
this.ServiceType = serviceType;
this.LiftStyle = lifeStyle;
}
#region Properties
/// <summary>
/// 服务类型
/// </summary>
public Type ServiceType { get; protected set; }
/// <summary>
/// 生命周期
/// </summary>
public ComponentLifeStyle LiftStyle { get; protected set; }
/// <summary>
/// 关键字
/// </summary>
public string Key { get; set; }
/// <summary>
/// 配置
/// </summary>
public string Configuration { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Order { get; set; }
#endregion
}

 其中:AttributeInfo<T> 中的T 其实就是DependencyAttribute的约束,利用这个查找所有加了DependencyAttribute的服务类

下一篇:

IOC容器特性注入第四篇:容器初始化

IOC容器特性注入第三篇:Attribute封装的更多相关文章

  1. IOC容器特性注入第五篇:查找(Attribute)特性注入

    前面几篇文章分别介绍:程序集反射查找,特性,容器,但它们之间贯穿起来,形成查找Attribute注入IOC容器,就得需要下面这个类帮忙: 1.DependencyAttributeRegistrato ...

  2. IOC容器特性注入第四篇:容器初始化

    IOC容器,就是把各种服务都注入到容器里,想要什么就去拿什么,不仅解决服务类和接口类的耦合度还可以提高性能方便管理. 这里封装一个接口类和一个实现类 1.IContainerManager接口 pub ...

  3. IOC容器特性注入第六篇:利用MVC注入点,把容器启动

    这里是利用MVC三个注入点中的:IDependencyResolver 进行注入 在全局类中Global.asax代码如下: #region MVC Inject System.Web.Mvc.Dep ...

  4. IOC容器特性注入第七篇:请求上下文作用域

    Ninject的对象作用域: Transient .InTransientScope() 每次调用创建新实例. Singleton .InSingletonScope() 单例,仅创建一个实例. Th ...

  5. IOC容器特性注入第一篇:程序集反射查找

    学习kooboo的框架发现它的注入容器方法比较特别,同样是利用MVC的注入点,但它是查找网站下面bin所有的DLL利用反射查找特性找到对应的服务注入到容器. 这样的好处很简单:完全可以不用关心IOC容 ...

  6. IOC容器特性注入第二篇:初始引擎查找对应的IOC容器

    上篇文章介绍了如何利用反射类查找网站bin文件夹下面所有DLL的程序集类,这篇文章将介绍如何初始化一个IOC容器引擎. 目前IOC容器有很多,如Ninject,Autofac等,每个容器的驱动都不一样 ...

  7. 控制反转IOC与依赖注入DI - 理论篇

    学无止境,精益求精 十年河东十年河西,莫欺少年穷 昨天是五一小长假归来上班的第一天,身体疲劳,毫无工作热情.于是就看看新闻,喝喝茶,荒废了一天 也就在昨天,康美同事张晶童鞋让我学习下IOC的理论及实现 ...

  8. SpringBoot启动流程分析(六):IoC容器依赖注入

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  9. 我在项目中运用 IOC(依赖注入)--实战篇

    上一篇<我在项目中运用 IOC(依赖注入)--入门篇>只是简单的使用 IOC.实际项目使用 IOC 的情景复杂多了,比如说,构造函数有多个参数,有多个类继承同一个接口... Unity都有 ...

随机推荐

  1. 【dedecms网站安全】如何防止dedecms网站被DDos攻击

    [dedecms网站安全]如何防止dedecms网站被DDos攻击 第一步:进入后台,系统->添加新变量变量名称:cfg_anquan_cc 变量类型:布尔(Y/N)  参数说明:是否开启防CC ...

  2. .w调用action

    有两种方法发送Action请求,分别是sendBizRequest和sendBizRequest2,前者返回xml格式的参数,后者提供了返回json或者xml格式的参数的能力. 1.sendBizRe ...

  3. spring源码分析系列 (3) spring拓展接口InstantiationAwareBeanPostProcessor

    更多文章点击--spring源码分析系列 主要分析内容: 一.InstantiationAwareBeanPostProcessor简述与demo示例 二.InstantiationAwareBean ...

  4. NSString 多行的写法和区别

    NSString *str = @"aaaa\ aaaa\ bbbb\ aaaa"; NSString *str1 = @"bbbb" "cccc&q ...

  5. 【面试 redis】【第十二篇】redis的相关面试问题

    redis的相关面试问题 redis教程:http://www.redis.net.cn/tutorial/3501.html ==================================== ...

  6. POJ2456 Aggressive cows 二分

    Description Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stal ...

  7. CentOS中环境变量和配置文件

    什么是环境变量 bash shell用一个叫做 环境变量(environment variable) 的特性来存储有关shell会话和工作环境的信息.即允许在内存中存储数据,使得在程序或shell中运 ...

  8. WIN7系统有些文本乱码怎么办

    有些文本工具无法编辑中文   打开控制面板,找到语言设置 区域和语言,更改系统区域设置,改成中文,重启            

  9. Kotlin VS Java:基本语法差异(转载)

    5月18号,goole宣布Kotlin成为官方支持的开发语言以来,Kotlin语言社区,公众号,qq群等全面轰炸,本文是一篇译文,来自国外的一个用户,将给大家介绍,基础语法部分Kotlin和java之 ...

  10. mechanize (1)

    最近看的关于网络爬虫和模拟登陆的资料,发现有这样一个包 mechanize ['mekə.naɪz]又称为机械化的意思,确实文如其意,确实有自动化的意思. mechanize.Browser and ...