如果我加载一个程序集,并获得给定类型的静态只读字段,并且我希望该字段在静态构造函数上初始化,并且我在该字段上调用GetValue,它是否有值(因为我正在访问一个字段在一个类型,所以它需要是typeinitialized)?
(不,我不打算从反射中调用静态构造函数......)
看起来对我来说是对的.
// 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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
5