0
如果我加载一个程序集,并获得给定类型的静态只读字段,并且我期望该字段在静态构造函数上初始化,并且我在该字段上调用GetValue,它是否会有值因为我正在访问一个类型的字段,所以它需要被初始化)?静态构造函数之前反射
(不,我不打算调用从反射静态构造函数...)
如果我加载一个程序集,并获得给定类型的静态只读字段,并且我期望该字段在静态构造函数上初始化,并且我在该字段上调用GetValue,它是否会有值因为我正在访问一个类型的字段,所以它需要被初始化)?静态构造函数之前反射
(不,我不打算调用从反射静态构造函数...)
貌似是给我。
// In SomeAssembly.dll
public class TestClass
{
public static readonly int Field;
static TestClass()
{
Field = 5;
}
}
// In its own assembly
public class Program
{
public static void Main()
{
BindingFlags bindingFlags = BindingFlags.Static | BindingFlags.Public;
Assembly someAssembly = Assembly.LoadFile(@"Path\To\SomeAssembly.dll");
object field = someAssembly.GetType("TestClass")
.GetField("Field", bindingFlags)
.GetValue(null);
Console.WriteLine(field);
}
}
输出:
5
你是不是能够调用的GetValue和获得的价值了? – 2011-02-22 16:35:39
看起来像这样会很容易测试... – 2011-02-22 16:36:47