c#之反射
来源:互联网 发布:二次元人物制作软件 编辑:程序博客网 时间:2024/05/16 08:46
最近突然想研究一下反射,学习了网上各位前辈的文章,分享一下自己的学习笔记吧,水平有限有错误希望指出来;
`using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace 反射
{
public class RefClass
{
private int _Met01 =4;
private int _Met02=3;
public int Test3 { set { _Met01 = value; } get { return _Met01; } }
private int Test2 { set { _Met02 = value; } get { return _Met02; } }
string name = “likang”;
public void Show() { Console.WriteLine(_Met02); } public RefClass() { }}public class TestClass{ private string name = "king"; public string Name { get { return name; } }}class Program{ static void Main(string[] args) { RefClass re = new RefClass(); Type t = re.GetType();//Type类对于反射是非常重要的,Type有与每种数据类型对应的派生类,使用这个派生类 //的对象的方法、字段、属性来查找有关该类型的所有信息; //ConstructorInfo[] ci = t.GetConstructors(); //得到该类所有的构造函数 //foreach (ConstructorInfo item in ci) //{ // ParameterInfo[] ps = item.GetParameters(); //取出每个构造函数的所有参数 // foreach (ParameterInfo p in ps) // { // Console.WriteLine(p.ParameterType.ToString()); // } //} // PropertyInfo[] pp = t.GetProperties();//不带参数的方法只能获取公开的属性 // PropertyInfo[] pif = t.GetProperties(BindingFlags.NonPublic| BindingFlags.Public| BindingFlags.Instance);//获取公开属性和私有属性 // foreach (PropertyInfo item in pif) // { // Console.WriteLine(item.Name); // } TestClass tc = new TestClass(); Console.WriteLine(tc.Name); var a = tc.GetType().GetField("name",BindingFlags.Instance|BindingFlags.GetField| BindingFlags.NonPublic| BindingFlags.ExactBinding); a.SetValue(tc,"queen"); Console.WriteLine(tc.Name); //通过反射改变了私有变量的值 Console.ReadKey(); }}
}
`有几个标志性的类和方法介绍一下:
ConstructorInfo 构造函数的名称、参数、访问修饰符等信息皆可以反射获取;
MethodInfo 方法的名称、返回类型,参数,访问修饰符等信息可以反射获取;
FieldInfo 字段的名称,范文修饰符,并且可以获取设置字段值;
EventInfo 事件的名称、事件处理数据类型,添加或者移除事件处理;
PropertyInfo 属性的名称、数据类型、读写状态,获取和设置属性值;
ParameterInfo 参数的名称、数据类型。输入参数或输出参数;
- C#之反射
- C#反射之Assembly
- c#之反射_FieldInfo_GetField_
- C#之反射
- C#之反射
- C#之反射
- C#反射之初始
- c#之反射
- JAVA反射与C#反射之比较
- JAVA反射与C#反射之比较
- C#高级编程之“反射”
- C#高级编程之“反射”
- C#反射之基础应用
- C#反射之基础应用
- C#基础之反射(Reflection)
- C#之玩转反射
- C#之玩转反射
- C#之玩转反射
- 图解Unity3D跨平台机制(Windows, Linux, Mac OS, Android, iOS, UWP)
- jdk类库源码分析-各个包
- ios-处理登录
- 利用Idea生成的类图分析框架源码
- UNITY 往滚动视图(Scroll View)里面添加东西并显示出来
- c#之反射
- JAVA常见字符串方法
- fiddler 4 中遇到的proxy chenged 重新捕获的问题
- 用c++实现PV操作(父亲母亲儿子女儿)
- 端口扫描shell版和python版
- VIM简要配置
- c++输入字符
- Oracle 索引的创建,删除,修改
- Python学习小笔记with语句