2010-04-07 99 views
0

我声明了以下类。我需要检索类结构和静态值,而不需要实例化它。GetValue嵌套类中的静态字段

public class MyClass() 
{ 
    public static string field = "Value"; 

    public class nestedClass() 
    { 
     public static string nestedField = "NestedValue"; 
    } 
} 

我successfuly使用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!! 

任何人都知道为什么最后一行不工作,如何解决? 谢谢。

+4

请提供一段简短但完整的代码段。目前,您没有嵌套类 - 您有一个名为'nestedClass'的*方法*。如果您可以向我们提供我们可以剪切,粘贴和运行的内容,这将对您有很大的帮助。 – 2010-04-07 13:04:58

+0

这将是值得知道你得到什么异常。例如,它可能是代码安全问题。 – Robert 2011-03-14 14:18:39

回答

0

好吧,它似乎一切正常,我和最后一行后我得到“NestedValue”字符串。尝试.net框架3.5,4和4.5,一切正常(VS2012临)。然而,ReSharper指出,fi和nfi可能是一个可能的空引用。

公共类MyClass的() {

不要把“()”在你的课程结束后,该代码是仍处于试验阶段,这是多余的,除非你真的想使用实验代码,那么你必须提供一些参数给构造函数。