BuildManager.GetCompiledType c# aspx 得到静态变量
时间: 2024-02-25 19:54:25 浏览: 20
在获取到 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 值。
相关问题
c# aspx web BuildManager 得到静态变量
您可以使用 BuildManager 类的 GetGlobalAsaxType 方法获取 Global.asax 文件的类型,然后使用反射机制获取该类型中的静态变量。
以下是一个示例代码:
```csharp
Type globalAsaxType = BuildManager.GetGlobalAsaxType();
if (globalAsaxType != null)
{
FieldInfo staticField = globalAsaxType.GetField("StaticVariableName", BindingFlags.Static | BindingFlags.Public);
if (staticField != null)
{
object staticValue = staticField.GetValue(null);
// 使用获取到的静态变量值
}
}
```
c#反射修改静态变量值
可以使用反射来修改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。