Вопрос

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

public class Foo
{
    public enum Views
    {
    }
}

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


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

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

Решение 2

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


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


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

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

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

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