首页 > 代码库 > c#反射技术
c#反射技术
反射介绍
简介
反射:反射是一个普通的术语,它描述了在运行过程中检查和处理程序元素的功能。也就是在程序运行时可以控制程序,不是在编译的时候。开始学习反射就学董两个类就可以。
Type类
通过这个类可以访问关于任何数据类型的信息。Type类只为存储类型的引用,是许多反射功能的入口。
实例化对象
方法一得到数据类型
<span style="font-size:18px;"> Type t1=typeof(int); Type t2=typeof(double);</span>
方法二从变量中得到
<span style="font-size:18px;"> int n = 1; double d = 0.1; Type t3 = n.GetType(); Type t4 = d.GetType();</span>
对象的属性和方法
属性
常用的属性也就是判断数据的类型返回bool类型
IsClass,IsArray,IsEnum,IsValueType
方法
得到类型的所有方法:
<span style="font-size:18px;"> MethodInfo[] methods =t1.GetMethods(); foreach (MethodInfo method in methods) { Console.WriteLine(method.Name); }</span>
同样还可以得到类的所有属性 字段事件
Assembly类
类允许访问程序集的元数据,它包含可以加载和执行程序集的方法。动态得到类型从dll库中获取
新建类库
<span style="font-size:18px;">namespace Test { classPerson { privatestring _name; publicstring Name { get { return _name; } set { _name = value; } } privatestring _address; publicstring Address { get { return _address; } set { _address = value; } } privateint _age; publicint Age { get { return _age; } set { _age = value; } } public Person(string name, string address, int age) { this._name = name; this.Address = address; this._age = age; } publicstring SayHi() { return"Hello ,My nameis" + this._name; } } }</span>
将生成的dll类库存放的一个特定位置,
创建类型
<span style="font-size:18px;">Assembly asse = Assembly.LoadFile(@"F:\C++\Demo\RefelectDemo\bin\Debug\Person.dll"); Type t5 = asse.GetType("Test.Person"); Console.WriteLine("Person 类的方法"); MethodInfo[] methods2 =t5.GetMethods(); foreach (MethodInfo m in methods2) { Console.WriteLine(m.Name); }</span>
动态传建实体
根基动态得到的type类型创建对象
<span style="font-size:18px;"> DateTime dt = (DateTime)Activator.CreateInstance(typeof(DateTime));</span>
总结
动态控制给编程者带来了很多方便。一项具体应用实例
http://www.csharp-examples.net/reflection-examples/
c#反射技术
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。