c# 反射使用及详解
来源:互联网 发布:arm服务器 知乎 编辑:程序博客网 时间:2024/06/06 01:28
获取成员变量的方式有两种
typeof(T).GetPropertys(BindingFlags 参数) // 这中方式获取的成员变量一定要是实现了 get set 存储器的变量typeof(T).GetFields(BindingFlags 参数) // 这种方式获取的成员变量不能实现 get set 。 否则获取不到成员变量。
命名空间备注 :
BindingFlags 在 System.Reflection命名空间下
使用
typeof(T).GetPropertys (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); // 获取T 类的所有成员变量,包括公有与非公有
先写一个测试的类,有实现了get set 存储器的成员变量与没有实现get set 的成员变量
public class Class1{ string _className = string.Empty; string classNameGetSet{ get{ return _className; } set{ _className = value; } } protected float _speed; private bool canMove{ get{ return true; } set{ } }}public class test : MonoBehavior{ void Start(){ Class1 c1 = new Class1 (); // 通过GetPropertys 获取到的成员变量 var tProperty = typeof(Class1).GetProperties (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); for(int i = 0;i < tProperty.Length;i++){ Debug.Log ("name :[" + tProperty [i].Name + "] value :[" + tProperty [i].GetValue (c1, null) + "] type :[" + tProperty [i].PropertyType + "]"); } // 通过GetFields 获取到的成员变量 var field = typeof(Class1).GetFields (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); for(int i = 0;i < field.Length;i++){ Debug.Log ("name :[" + field [i].Name + "] value :[" + field [i].GetValue (c1) + "] type :[" + field [i].FieldType + "]"); }}}
通过GetPropertys 获取到的成员变量。 可以看到,只获取到实现了 get set 存储器的成员变量。
通过GetFields 获取到的成员变量。 可以看到,只获取到没有实现 get set 的成员变量
通过反射还能获取到类的所有方法,调用类里的方法等。
其他使用方法参考以下链接
http://www.cnblogs.com/yaozhenfa/p/CSharp_Reflection_1.html 玩转反射
BindingFlags 枚举介绍
http://blog.csdn.net/qq_32452623/article/details/53401890
0 0
- c# 反射使用及详解
- [C#反射]C#中的反射解析及使用.
- C# Assembly.Load 反射使用详解
- 详解C#中的反射
- C#反射实例详解
- 详解C#中的反射 .
- C#中的反射详解
- C#反射详解
- C#反射机制详解
- 详解C#中的反射
- 详解C#中的反射
- 详解C#中的反射
- C#反射(Reflection)详解
- 详解C#中的反射
- 详解C#中的反射
- C# 反射机制详解
- 详解C#中的反射
- 详解C#中的反射
- CPP_Basic_Summary_0.3
- shell基础-bash基本功能-输入输出重定向
- ubuntu16.0.4 下搜狗输入法安装及输入中文时乱码解决
- IPython使用学习笔记
- Android Retrofit2+okhttp3详细配置,解决URL乱码的问题。
- c# 反射使用及详解
- 关于解决AndroidStudio自动下载第三方jar包速度慢的问题解决方法
- 堆的一些理解
- 23种设计模式-Adapter(适配器)设计模式
- ACM_HDU 1213 How Many Tables(基础并查集)
- Setter Semantics即@property中使用的修饰符
- 拷贝构造函数3.调用时机
- Java实现CRC16CCITT算法
- 嵌入式linux驱动-bus-driver-device模型笔记