嵌套类中的静态字段上的GetValue

时间:2010-04-07 13:00:26

标签: c# static field

我声明了以下类。我需要在没有实例化的情况下检索类结构和静态值。

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!! 

任何人都知道为什么最后一行不起作用以及如何解决? 感谢。

1 个答案:

答案 0 :(得分:0)

好吧这一切似乎对我都很好,在最后一行之后我得到了#34; NestedValue"串。试过.net框架3.5,4和4.5,一切正常(VS2012 Pro)。 ReSharper表示,fi和nfi可能是一个可能的空引用。

  

公共类MyClass()   {

不要放"()"在你的课程结束时,该代码仍然是实验性的,除非你真的想要使用实验代码,否则它是多余的,那么你必须为构造函数提供一些参数。