Skip to content

反射简述

反射,允许获取有关加载程序集及其定义的类型的信息,例如类,接口和值类型(即结构和枚举)。 还可以使用反射在运行时创建类型实例,以及调用和访问它们。

查看类型信息

主要使用System.Type下的相关内容。 Type是一个类,包含类的所有信息,包含各种成员方法,成员属性等

主要使用下面两种方式得到某类型的Type

  • typeof()
  • object.GetType()

假设已获得类型的Type类,可以通过GetMembers()获得所有内容—— 包括字段、方法、属性等,返回MemberInfo类型

可以指定BingFlags来确定可见性

获取成员

使用

  • GetField 获得字段
CSharp
FieldInfo? f = type.GetField("intPro");
if (f != null)
{
Console.WriteLine($"Field: {f.Name}, Type: {f.FieldType} Value:{f.GetValue(instance)}");
}
f?.SetValue(instance, 1145);
  • GetMethod 获得方法
CSharp
MethodInfo? methodInfo = type.GetMethod("Show", BindingFlags.NonPublic | BindingFlags.Instance);

methodInfo?.Invoke(instance, null);

其中instance表示已经实例化的对象

实际用途

Released under the MIT License.