У меня есть класс псевдоперечисления, который состоит из защищенного конструктора и списка статических свойств только для чтения:
public class Column
{
protected Column(string name)
{
columnName = name;
}
public readonly string columnName;
public static readonly Column UNDEFINED = new Column("");
public static readonly Column Test = new Column("Test");
/// and so on
}
Я хочу получить доступ к отдельным экземплярам по их строковому имени, но по какой-то причине отражение вообще не возвращает статические свойства:
На приведенном выше изображении вы можете видеть, что свойство существует и имеет ненулевое значение, но если я запрашиваю его с помощью отражения, я получаю null
.
Если я попытаюсь запросить список свойств, я получу пустой массив:
PropertyInfo[] props = typeof(Column).GetProperties(BindingFlags.Static);
if (props.Length == 0)
{
// This exception triggers
throw new Exception("Where the hell are all the properties???");
}
Что я делаю не так?
ASDU
, ноColumn.Undefined
иColumn.Test
являются статическими полями, а не свойствами. Посмотрите наType.GetField
:) - person gnud   schedule 24.04.2018