常见的使用反射的场景:
程序在运行时动态地访问类的成员,如获得类的变量、方法。
例如:用反射给本类的变量赋值。
public class Student{
public string studentName = "小王";
public void Test()
{
Type type = this.GetType(); // 获得本类的类型
PropertyInfo propertyInfo = type.GetProperty("studentName"); // 获得本类的成员变量
propertyInfo.SetValue(this, "老王"); // 修改本类的成员变量
}
}
上面的代码,运行Test()方法后,能够重新给本类的变量赋值。通常经过别的操作得到新的值,然后将新的值做为参数传入该方法。
使用反射和泛型,可以使得接口类的设计通用型更强,但会降低代码可读性。报错时得Debug来一步步调试来看运行时反射得到是数据类型。
其他反射使用场景:获得类的方法并调用等。
学习: