C#中如何实现反射
时间: 2024-02-03 13:13:26 浏览: 18
C#中,可以使用System.Reflection命名空间下的类来实现反射。以下是一个简单的示例:
```csharp
using System;
using System.Reflection;
class MyClass {
private int myField;
public MyClass() {
myField = 42;
}
public void MyMethod() {
Console.WriteLine("This is my method.");
}
}
class Program {
static void Main(string[] args) {
Type t = typeof(MyClass);
Console.WriteLine("Type name: " + t.Name);
Console.WriteLine("Full name: " + t.FullName);
FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
foreach (FieldInfo field in fields) {
Console.WriteLine("Field name: " + field.Name);
Console.WriteLine("Field type: " + field.FieldType);
Console.WriteLine("Field value: " + field.GetValue(new MyClass()));
}
MethodInfo method = t.GetMethod("MyMethod");
method.Invoke(new MyClass(), null);
}
}
```
上述示例中,我们首先使用typeof关键字获取类型MyClass的Type对象。然后,我们使用Type对象获取该类型的信息,如名称、完整名称、字段、方法等。我们还使用反射获取私有字段的值,并调用方法。这些都是通过System.Reflection命名空间下的类来实现的。