Использование .NET CodeDOM для объявления и инициализации поля в одном операторе

StackOverflow https://stackoverflow.com/questions/29531

  •  09-06-2019
  •  | 
  •  

Вопрос

Я хочу использовать CodeDOM для объявления и инициализации статического поля в одном операторе.Как я могу это сделать?

// for example
public static int MyField = 5;

Кажется, я понимаю, как объявить статическое поле, и могу установить его значение позже, но, похоже, я не могу получить вышеуказанный эффект.

@lomaxx, naw, я просто хочу статично.Я не хочу константу.Это значение может измениться.Мне просто хотелось простоты объявления и инициализации одним махом.Как будто в кодовом мире все просто.Каждое имя типа имеет длину более 20 символов, и в конечном итоге вы строите огромные деревья выражений.У меня глаза вылезают из орбит.Я жив сегодня только благодаря переформатированию Решарпера.

Это было полезно?

Решение

После создания экземпляра CodeMemberField для представления статического поля вы можете назначить свойство InitExpression выражению, которое хотите использовать для заполнения поля.

Другие советы

Эта почта Омер ван Клотен, кажется, делает то, что вы хотите.Обратите внимание, что в выводе есть строка:

private static Foo instance = new Foo();

Я думаю, что вам нужна константа, а не статика.Я предполагаю, что вам нужен эффект статического режима только для чтения, поэтому вы всегда хотите, чтобы значение было равно 5.

В С# константы обрабатываются точно так же, как статические только для чтения.

Из документации С#:

Несмотря на то, что константы считаются статическими членами, постоянная декларация не требует и не допускает статический модификатор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top