Как импортировать другой Enum в My Enum - PullRequest
2 голосов
/ 15 июля 2010

Это мой Enum

public enum MyEnum {Blue, Red};

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

Что я хочу сделать, это вытащить все элементы из внешнего перечисления, сделать их частью моего перечисления, т.е.

public enum MyEnum {синий, красный, ExternalEnum.Yellow, ExternalEnum.White};

Есть ли способ, которым я могу сделать это легко, поэтому каждый раз, когда я получаю новую версию ExternalEnum, мне не нужно вручную просматривать все его элементы? Я не хочу использовать расширение (подкласс), поскольку они принадлежат другому пакету.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

Вы можете сделать это, переопределив константы перечисления следующим образом:

public enum ExternalEnum
{
    White, // -> 0
    Black  // -> 1
}

public enum MyEnum
{
    White = ExternalEnum.White, // -> 0
    Black = ExternalEnum.Black, // -> 1
    Red, // -> 2
    Blue // -> 3
}

Однако вы должны убедиться, что целочисленные значения констант enum не перекрываются. Самый простой способ сделать это - сначала объявить внешние константы. Не существует такого понятия, как автоматический импорт в перечисления. Вы не можете расширять перечисления.

2 голосов
/ 15 июля 2010

То, о чем вы говорите, это «Динамическое перечисление».

Вот ссылка на предыдущий вопрос здесь, в StackOverflow.

1 голос
/ 15 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...