[2014-9-9]反射

1.反射即是获取一个运行程序或其他程序的元数据

2.type类是一个抽象类,不能被实例化,用来包含类型的数据

Type t = myInstance.GetType();

Type t =Typeof(myInstance);

3.特性(attribute)

特性是一种向程序集增加元数据的语言结构,特性片被方括号包围,其中是特性名和特性的参数列表

Obsolete特性 将程序结构标注为过期

Conditional特性 包含或者排斥特性方法的所有调用

3.1多个特性

独立特性相互重叠在一起,单个特性片段,特性之间用逗号分开。

特性为字段和方法上的特性

3.2自定义特性

声明一个派生自 System.Attribute类 后缀为Attribuete结尾的名称

建议声明为sealed特性类

公共成员为 字段,属性,构造函数

对于字段,声明指定了使用单个字符串的构造函数,对于方法,声明指定了使用了两个字符串的构造函数

3.3 构造函数中位置参数和命名参数

命名参数设置特性的字段或者属性的值

[MyAttribute("class","Reliever=arr",ver="0.1")] 后面两个为命名参数

4 IsDefined方法,检测某个特性是否应用于某个类

t.IsDefined(typeof(MyAttribute),false)

第一个参数 接受检查特性type对象

第二个参数 是否搜素继承树来查找这个特性

5 GetCustomAttribute 方法 返回应用到结构的特性的数组

Object[] arr =t.GetCustomAttribute(false)

时间: 2024-10-03 22:53:53

[2014-9-9]反射的相关文章

python 模块 反射

模块 os模块 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dir1/dir2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os

结束回忆的2014,带着精彩奔向2015!

一.写在前面的话 今天结束了一天的工作,明天就是大年三十了,下班回家收拾行李,离家的游子也该回家看看年迈的父母,看看那些思念的亲人.一直觉得自己是一个不善于总结的人,看着园友们都在为各自的目标规划着而努力着,想想自己也该为过去浑浑噩噩度过的2014年总结一下.一直喜欢着一句话:“这个世界上永远有比你优秀的人,在你偷懒休息的时候,勤奋着做着每件你看不到的事儿,这就是真实的社会,放下身姿把自己当做笨鸟往前不停地飞,飞久了便成为了一种习惯.” 二.过去的经历 大一,未曾知道所谓的计算机科学是什么东西,

IOS_反射

// // PJReflect.m // 新浪微博 // // Created by pj on 14-8-8. // Copyright (c) 2014年 pj. All rights reserved. // #import "PJReflect.h" #import "PJFiled.h" #import <objc/runtime.h> #import <Foundation/NSObjCRuntime.h> @implementa

&lt;2014 04 29&gt; c/c++常用库总结

C 标准库 ============================================================================================== C++ 标准库 STL 标准库中提供了C++程序的基本设施.虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正式定型,但是在标准库的实现上却很令人欣慰得看到多种实现,并且已被实践证明为有工业级别强度的佳作. 1. Dinkumware C++ Library 参考站点:http://w

JAVA反射系列之Field,java.lang.reflect.Field使用获取方法

JAVA反射系列之Field,java.lang.reflect.Field使用获取方法.   转载https://my.oschina.net/u/1407116/blog/209383 摘要 java.lang.reflect.Field使用 Field. 首先必须明一点 Field类主要是用来辅助获取和操作类的属性的! 1.怎么通过反射获取类的属性 先来看JDK提供的方法有如下几种: a)Class.getDeclaredField(String name);      返回一个 Fiel

重构机房收费系统总结1之配置文件+反射+抽象工厂

在重构机房收费系统之前就一直听说这次重构要用反射+配置文件.深远的作用不知道,但是在这次重构用到,目的还是挺明确的:就是为了更换数据时方便,遵循开放-封闭原则,解决了可维护和可扩展的问题. 下面就以机房收费系统登录为例来看看配置文件+反射的用法.机房收费系统登录用到的数据库表是User_info表(用户表).我利用的是三层思想,先看一下我的整体架构! 下面看看配置文件+反射+抽象工厂在登录时访问数据库User表时的用法. 1.先进行配置文件操作 步骤:(1)在VS资源管理器的新建项目UI中,会有

PHP反射(ReflectionClass、ReflectionMethod)在ThinkPHP框架的控制器调度模块中的应用

ThinkPHP框架的控制器模块是如何实现 前控制器.后控制器,及如何执行带参数的方法? PHP系统自带的 ReflectionClass.ReflectionMethod 类,可以反射用户自定义类的中属性,方法的权限和参数等信息,通过这些信息可以准确的控制方法的执行. ReflectionClass:  [PHP手册]详情 主要用的方法: hasMethod(string)  是否存在某个方法 getMethod(string)  获取方法 ReflectionMethod:  [PHP手册]

ReflectUitls类的编写和对反射机制的解析

ReflectUitls类的编写和对反射机制的解析 反射相关的类 反射相关的类,最基本的当然是Class类. 获取了Class对象之后,就可以接着生成对象实例.调用方法.查看字段等等. 字段(Field).方法(Method)和构造方法(Constructor<T>)各有相应的类来表示,它们共同继承于java.lang.reflect.AccessibleObject类: 这三个类共同实现的还有Member接口: 获取字段.方法和构造方法时,需要调用Class类的getXXX()和getDec

JAVA反射改动常量,以及其局限

问题.以及一个解决方式 今天公司的JAVA项目碰到一个问题:在生成xls文件的时候,假设数据较多.会出现ArrayIndexOutOfBoundsException. Google发现是项中所用的jxl包(开源库.用以处理xls文件)的一个BUG. 也找到了一个解决的方法:http://www.blogjava.net/reeve/archive/2013/01/11/114564.html--即找到它的源码.改动当中的一个静态常量.然后又一次打包成jar就可以.试了一下,这种方法确实可行. 还

职责链模式+策略模式+反射+配置文件,完美实现下机操作(一)

纵观机房收费系统,逻辑最复杂的也就是下机操作了,这几天一直在考虑下机操作该如何进行. 流程分析: 判断卡号是否存在与是否上机 上机时间的处理 根据时间计算消费金额 更新余额,添加记录 关于逻辑的操作主要集中在两个计算上面时间和金额.首先说上机时间的处理问题,做之前我看了下第一版机房收费系统关于下机的操作: '计算消费时间 TxtTime.Text =DateDiff("n", Trim(TxtOntime.Text), Trim(Offtime)) TxtTime.Text = Txt