C# - Получите значения статических свойств от статического класса

Просто, потому что они существуют, не означает, что они должны использоваться. Большинство преимуществ, полученных от использования именованных блоков, лучше получено при помощи нового закрытого метода.

  1. Вы не будете в состоянии использовать временные переменные, объявленные в новом методе
  2. , GC и JIT-компилятор подберут ту же информацию при помощи нового метода
  3. Используя описательное имя для нового метода (использующий "частную Дату initNextTuesday ()" в Вашем случае), будет допускать сам комментирующий преимущество кода
  4. Никакая потребность осуществить рефакторинг код, когда Вы уже "предварительно учли" его

В дополнение к этим преимуществам, Вы также извлекаете пользу повторного использования кода, и это сократит Ваши длинные методы.

40
задан David Mulder 19 April 2016 в 09:53
поделиться

2 ответа

Проблема в том, что property1..3 не свойства, а поля.

Чтобы заставьте их свойства изменить их на:

private static string _property1 = "NumberOne";
public static string property1
{
  get { return _property1; }
  set { _property1 = value; }
}

Или используйте свойства auto и инициализируйте их значения в статическом конструкторе класса:

public static string property1 { get; set; }

static MyStaticClass()
{
  property1 = "NumberOne";
}

... или используйте myType.GetFields (...) if fields то, что вы хотите использовать.

54
ответ дан 27 November 2019 в 01:45
поделиться

Try removing BindingFlags.DeclaredOnly, because according to MSDN:

Specifies that only members declared at the level of the supplied type's hierarchy should be considered. Inherited members are not considered.

Since static's cannot be inherited, this might be causing your issues. Also I noticed the fields you are trying to get are not properties. So try using

type.GetFields(...)
6
ответ дан 27 November 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: