c# 用反射重写静态类成员
时间: 2023-10-28 21:07:39 浏览: 94
在 C# 中,静态类成员是属于类本身的,而不是类的实例。因此,想要使用反射来修改静态类成员,需要使用 Type 类的 GetField 或 GetProperty 方法来获取静态成员的 FieldInfo 或 PropertyInfo 对象,然后使用 SetValue 方法来设置其值。下面是一个示例:
```csharp
using System;
using System.Reflection;
public static class MyStaticClass
{
public static string MyStaticField = "Hello, world!";
}
class Program
{
static void Main(string[] args)
{
Type myStaticClassType = typeof(MyStaticClass);
FieldInfo myStaticFieldInfo = myStaticClassType.GetField("MyStaticField",
BindingFlags.Public | BindingFlags.Static);
myStaticFieldInfo.SetValue(null, "Hello, C#!");
Console.WriteLine(MyStaticClass.MyStaticField);
}
}
```
这个示例中,我们通过反射获取了 MyStaticClass 类的 MyStaticField 字段的 FieldInfo 对象,然后使用 SetValue 方法将其值修改为 "Hello, C#!"。注意,由于 MyStaticField 是静态成员,因此 SetValue 方法的第一个参数为 null。最后,我们打印 MyStaticClass.MyStaticField 的值,可以看到它已经被修改为 "Hello, C#!"。
阅读全文