c#反射修改静态变量值
时间: 2023-07-27 08:22:57 浏览: 223
可以使用反射来修改C#中的静态变量值,具体步骤如下:
1. 获取静态变量的FieldInfo对象,可以使用Type类的GetField方法,传入变量名和BindingFlags.Static标志来获取静态变量的FieldInfo对象。
2. 使用FieldInfo对象的SetValue方法,传入目标对象(null表示静态变量)、新值来修改静态变量的值。
以下是一个示例代码:
```
using System;
using System.Reflection;
public static class MyClass
{
public static int MyStaticVar = 1;
}
class Program
{
static void Main(string[] args)
{
FieldInfo field = typeof(MyClass).GetField("MyStaticVar", BindingFlags.Static | BindingFlags.Public);
field.SetValue(null, 2);
Console.WriteLine(MyClass.MyStaticVar); // output: 2
}
}
```
在这个示例中,我们获取了MyClass类中名为MyStaticVar的静态变量的FieldInfo对象,然后使用SetValue方法将它的值修改为2。
相关问题
C# 反射修改静态变量
可以使用反射来修改静态变量。首先,您需要获取表示该变量的 FieldInfo 对象,然后使用 FieldInfo.SetValue() 方法来设置新值。下面是一个示例代码:
```csharp
using System;
using System.Reflection;
class MyClass
{
public static int MyStaticInt = 42;
}
class Program
{
static void Main(string[] args)
{
Type type = typeof(MyClass);
FieldInfo field = type.GetField("MyStaticInt", BindingFlags.Static | BindingFlags.Public);
field.SetValue(null, 100);
Console.WriteLine(MyClass.MyStaticInt); // 输出 100
}
}
```
在上面的示例中,我们使用 typeof() 方法获取 MyClass 的 Type 对象,然后使用 GetField() 方法获取 MyStaticInt 的 FieldInfo 对象。我们将 BindingFlags 参数设置为 Static 和 Public,因为我们要获取静态公共变量的信息。
然后,我们使用 FieldInfo.SetValue() 方法来将新值 100 分配给 MyStaticInt。请注意,我们将第一个参数设置为 null,因为 MyStaticInt 是一个静态变量,而不是实例变量。
最后,我们输出 MyClass.MyStaticInt 的值,以验证它已经被修改为 100。
BuildManager.GetCompiledType c# aspx 得到静态变量
在获取到 ASPX 页面的编译类型后,可以通过反射机制获取其中的静态变量。在 C# 中使用反射机制可以访问类的属性、方法和字段等成员,包括静态成员。
以下是一个示例代码,演示如何获取 ASPX 页面的编译类型,并获取其中的静态变量:
```csharp
// 获取 ASPX 页面的编译类型
Type pageType = BuildManager.GetCompiledType("yourPage.aspx");
// 获取静态变量
FieldInfo fieldInfo = pageType.GetField("yourStaticField", BindingFlags.Static | BindingFlags.Public);
if (fieldInfo != null)
{
object value = fieldInfo.GetValue(null);
// 在这里可以对获取到的静态变量进行操作
}
```
在上面的示例代码中,使用 Type.GetField 方法获取名为 "yourStaticField" 的静态变量,然后使用 FieldInfo.GetValue 方法获取该变量的值。需要注意的是,静态变量不属于任何实例,因此在 FieldInfo.GetValue 方法的参数中传入 null 值。
阅读全文