C#通过反射获取和设置静态变量
时间: 2024-11-27 22:11:44 浏览: 40
C# 反射与dynamic最佳组合示例代码
在C#中,反射是一个强大的特性,它允许程序在运行时动态地检查和操作类型、字段、属性、方法等信息。对于静态变量,由于它们属于类型本身而不是实例,所以你可以直接通过`typeof()`获取类型对象,然后利用其`GetField()`方法来获取静态字段。
以下是获取和设置C#静态变量的一个例子:
```csharp
using System;
using System.Reflection;
class MyClass
{
public static string StaticVariable = "Initial Value";
}
public class ReflectionExample
{
public static void Main()
{
// 获取MyClass类型的类型对象
Type myType = typeof(MyClass);
// 使用反射找到名为"StaticVariable"的静态字段
FieldInfo field = myType.GetField("StaticVariable", BindingFlags.Static | BindingFlags.Public);
// 打印初始值
Console.WriteLine($"Initial value of the static variable: {field.GetValue(null)}");
// 设置新值
field.SetValue(null, "New Value");
// 再次打印验证是否已更新
Console.WriteLine($"Updated value of the static variable: {field.GetValue(null)}");
}
}
```
在这个例子中,我们首先使用`GetField()`方法找到静态变量,`null`作为第一个参数是因为我们不需要特定的实例来访问静态成员。然后,我们使用`GetValue()`获取当前值,最后使用`SetValue()`来改变值。
阅读全文