Ваше перечисление не просто в пространстве имен - это вложенный тип. Фактически, ваш примерный «рабочий» код не будет работать, он должен быть
int myValue = (int) Company.General.Project1.Rainbow.Colours.Red;
(не только вам нужно включить часть Rainbow
, но также не существует неявного преобразования из enum в int.)
Сделайте ваше перечисление типом верхнего уровня:
namespace Company.General.Project1
{
[Flags]
public enum Colours
{
Red,
Blue,
Orange
}
}
Тогда вы сможете написать:
using Company.General.Project1;
...
Colours x = Colours.Red;
int y = (int) Colours.Red;
(Обратите внимание, что для эффективного использования [Flags]
вы должны назначать значения явно, например, 1, 2, 4, 8 ...)
РЕДАКТИРОВАТЬ: я предполагал, что вы действительно хотите иметь возможность использовать Colours.Red
и т. Д. Вы можете сохранить свою текущую структуру, используя вложенный тип, и просто напишите:
Rainbow.Colours x = Rainbow.Colours.Red;
int y = (int) Rainbow.Colours.Red;
Однако, если у вас нет особой причины делать перечисление вложенным, я бы не стал.