Использование .NET CodeDOM для объявления и инициализации поля в одном выражении - PullRequest
4 голосов
/ 27 августа 2008

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

// for example
public static int MyField = 5;

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

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

Ответы [ 3 ]

8 голосов
/ 27 августа 2008

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

1 голос
/ 27 августа 2008

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

private static Foo instance = new Foo();
0 голосов
/ 27 августа 2008

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

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

Из документов C # :

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

...