Есть ли способ сопоставить перечисление с другим перечислением в C # .NET 3.5? - PullRequest
0 голосов
/ 18 июня 2009

Я пытаюсь настроить перечисление, которое отображает определенные специфичные для проекта значения в стандартное перечисление System.Drawing.Color.

Вот идея того, что я хотел бы сделать:

public enum SessionColors
{
     Highlights = Color.HotPink,
     Overlays   = Color.LightBlue,
     Redaction  = Color.Black   
}

Цель состоит в том, чтобы иметь его, чтобы я мог использовать SessionColors. Подсветка для вещей, которые я идентифицирую как выделение, и все же я могу позже изменить отображение перечисления и повлиять на все последующие цвета.

Я понимаю, что могу посмотреть значения Color.HotPink и т. Д. И просто использовать их, но это не так ясно. Есть идея получше?

Ответы [ 3 ]

7 голосов
/ 18 июня 2009

Просто сделайте это с публичными константами:

public static class SessionColors
{
    public static readonly Color Highlights = Color.HotPink;
    public static readonly Color Overlays   = Color.LightBlue;
    public static readonly Color Redaction  = Color.Black;
}
3 голосов
/ 18 июня 2009

Colors.HotPink не является значением перечисления, это статическое свойство статического класса Colors, который возвращает значение Color. И это значение Color является структурой, а не целым числом.

Таким образом, вы не можете использовать Color в качестве базового значения перечисления, поскольку оно ограничено целочисленными типами.

2 голосов
/ 18 июня 2009

Я бы лично сделал это с помощью свойств Color в статическом классе вместо перечислений. В этом есть много преимуществ, но, возможно, наиболее выгодным будет то, что это позволит вам загружать цвета из app.config (или другого источника конфигурации) во время выполнения без принудительной перекомпиляции.

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