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