GetValue для статического поля внутри вложенных классов - PullRequest
0 голосов
/ 07 апреля 2010

У меня объявлен следующий класс. Мне нужно получить структуру класса и статические значения, не создавая ее.

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 голосов
/ 17 апреля 2015

Ну, мне кажется, все работает нормально, и после последней строки я получаю строку "NestedValue". Пробовал на .net frameworks 3.5, 4 и 4.5, все работает (VS2012 Pro). ReSharper утверждает, что fi и nfi могут быть возможной нулевой ссылкой.

открытый класс MyClass () {

Не ставьте "()" в конце вашего класса, этот код все еще является экспериментальным, и он избыточен, если вы на самом деле не хотите использовать экспериментальный код, тогда вам придется предоставить конструктору некоторые аргументы.

...