我声明了以下类。我需要在没有实例化的情况下检索类结构和静态值。
public class MyClass()
{
public static string field = "Value";
public class nestedClass()
{
public static string nestedField = "NestedValue";
}
}
我成功地使用了GetFields和GetNestedType来恢复类结构,并且GetValue(null)在字段上工作正常,但在nestedField上却没有。 让我来样品:
var fi = typeof(MyClass).GetField("field", BindingFlags.Public | BindingFlags.Static);
var nt = typeof(MyClass).GetNestedType("nestedClass", BindingFlags.Public);
var nfi = nt.GetField("nestedField", BindingFlags.Public | BindingFlags.Static);
// All the above references are detected correctly
var value = fi.GetValue(null); // until here everything works fine. value == "Value"
var nestedValue = nfi.GetValue(null); // this one does not work!!
任何人都知道为什么最后一行不起作用以及如何解决? 感谢。
答案 0 :(得分:0)
好吧这一切似乎对我都很好,在最后一行之后我得到了#34; NestedValue"串。试过.net框架3.5,4和4.5,一切正常(VS2012 Pro)。 ReSharper表示,fi和nfi可能是一个可能的空引用。
公共类MyClass() {
不要放"()"在你的课程结束时,该代码仍然是实验性的,除非你真的想要使用实验代码,否则它是多余的,那么你必须为构造函数提供一些参数。