Могу ли я получить enum как функциональность для строк в .net? - PullRequest
0 голосов
/ 15 ноября 2011

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

Допустим, у меня есть список сайтов:

www.website1.com
www.website2.com
www.website3.com
www.website4.com

Я надеялся, что смогу получить что-то похожее на то, как перечисления работают с целыми числами.

Когда кому-то нужно проверить URL, у него будет список, из которого он может выбрать, и он сможет написать что-то вроде этого, возможно

WebsiteNames.Website1

Есть ли хороший (чистый) способ сделать это?

Ответы [ 3 ]

3 голосов
/ 15 ноября 2011

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

public static class WebSiteNames
{
   public readonly string Website1 = "www.website1.com";
   public readonly string Website2 = "www.website2.com";
}

Тогда вы можете использовать его следующим образом:

WebSiteNames.Website1

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

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

Класс, подобный так, должен это делать:

public static class WebSiteNames
{
  public static readonly string Website1 = "www.website1.com";
  public static readonly string Website2 = "www.website2.com";
}

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

0 голосов
/ 15 ноября 2011

Вы можете использовать struct следующим образом:

public struct WebSiteNames
{
    public const string Website1 = "www.website1.com";
    public const string Website2 = "www.website2.com";
    public const string Website3 = "www.website3.com";
    public const string Website4 = "www.website4.com";
}

Поскольку struct является value type, его использование аналогично enums.

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