Вложенные перечисления с System.Reflection.Emit - PullRequest
0 голосов
/ 01 мая 2009

Я хочу создать класс с вложенным перечислением.

public class Foo
{
    public enum Views
    {
    }
}

Однако класс System.Reflection.Emit.TypeBuilder не имеет только DefineNestedEnum DefinedNestedType. Существует ModuleBuilder.DefineEnum, который позволяет мне создавать перечисление, но я не нахожу способ сделать его вложенным. Могу ли я создать перечисление, не подделывая его (т.е. используя EnumBuilder)?


Я перенес свое решение в ответ ниже.

Ответы [ 2 ]

3 голосов
/ 01 мая 2009

См. Пример в конце этой статьи , которая делает именно то, что вы хотите. (Вы используете DefineNestedType с правильными аргументами)

1 голос
/ 01 мая 2009

Перемещая свой ответ, я вставил вопрос сюда.


Единственное, о чем я могу думать, это определить вложенный тип как закрытый класс, который расширяет System.Enum и определяет публичные | статические | литеральные поля с постоянными значениями. По сути, это то, что делает компилятор C #, основываясь на том, что я узнал, разобрав его. Если я делаю это и ссылаюсь на сборку, Intellisense распознает его как enum и функционирует так же, как enum.


Это именно тот метод, который MSDN показывает, что Джереми связан.

...