前言:反射在日常编程中由于接触较少,所以在大家眼中总是一个神秘的存在,也会觉得反射是一件复杂的事情,今天就在这里帮助大家了解一些反射的基础操作,其实反射很简单! 通过本文你将了解到?
什么是反射?反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,是一种动态获取的信息以及动态调用对象的方法的功能。 那么在介绍前先创建个反射的目标类,接下来将通过反射方法获取此类所有数据: namespace TestReflection{ public class TestReflectionClass { private int privateUnStatic; private static int privateStatic; public int publicUnStatic; public static int publicStatic; public int PublicProperty { set { privateUnStatic = value; Debug.LogError('PublicProperty set 已执行'); } get { Debug.LogError('PublicProperty Get 已执行'); return privateUnStatic; } } public void TestFunc() { Debug.LogError('this is a function!'); } public int TestFuncWithParam(int a, int b) { int sum = a + b; return sum; } }} 反射获取属性获取属性主要是通过Type的GetField()方法来获取,下面案例列举所有情况,请细品~ 获取属性代码:
方法执行后的日志: 反射获取访问器获取访问器主要是通过Type的GetProperty()方法来获取,由于和属性的获取有许多相似之处,下面案例列了举部分情况,请细品~ 获取访问器代码: public void TestProperty() { TestReflectionClass testCase = new TestReflectionClass(); Type testClass = typeof(TestReflectionClass); //获取public属性 PropertyInfo publicProperty = testClass.GetProperty('PublicProperty'); Debug.LogError('publicProperty value:' + publicProperty.GetValue(testCase)); publicProperty.SetValue(testCase,66); Debug.LogError('publicProperty after set value:' + publicProperty.GetValue(testCase)); //其他类型属性类似,可参考field,不在介绍 } 方法执行后的日志: 反射获取方法获取方法主要是通过Type的GetMethod()方法来获取,由于和属性的获取有许多相似之处,下面案例列了举部分情况,请细品~ 获取方法代码:
方法执行后的日志: 结语:方法中有注释,以及最终的结果图都打印出来了,此篇为反射基础,之后会逐步推出更深入的研究,关注,带你飞! |
|
来自: taotao_2016 > 《计算机》