Какой хороший способ обработки перечислений, которые должны быть строками - PullRequest
2 голосов
/ 02 октября 2010

Я уверен, что перечисление не то, что я хочу. То, что я хочу, это список именованных предметов

CustomerLookup = "005",
CustomerUpdate = "1010"

«005» и «1010» - это не мои значения, это значения, которые я должен отправить стороннему лицу, которое я не могу контролировать. Их около 500. Я просто хочу, чтобы мой код выглядел красиво.

Вместо

SendRequest("005");

Я бы лучше посмотрел

SendRequest(RequestType.CustomerLookup);

У кого-нибудь есть какие-либо идеи о самодокументировании, не сходя с ума от кода?

Ответы [ 3 ]

8 голосов
/ 02 октября 2010

Что-то не так с:

public static class RequestType
{
     public static readonly string CustomerLookup = "005";
     // etc
}

или

public static class RequestType
{
     public const string CustomerLookup = "005";
     // etc
}

? Или, если вы хотите больше безопасности типа:

public sealed class RequestType
{
     public static readonly RequestType CustomerLookup = new RequestType("005");
     // etc

     public string Code { get; private set; }

     private RequestType(string code)
     {
         this.Code = code;
     }
}

Это в основном даст вам фиксированный набор значений (конструктор является закрытым, поэтому внешний код не может создавать разные экземпляры), и вы можете использовать свойство Code, чтобы получить соответствующее строковое значение.

0 голосов
/ 02 октября 2010

То, что вы уже делаете, мне кажется правильным.

Вы четко определяете значения типа запроса в своем коде без двусмысленности, и когда вы начинаете использовать их, у вас есть intellisense на вашей стороне.

Я думаю, что реальная проблема заключается в том, как вставить 500 значений в ваш код без каких-либо опечаток!

0 голосов
/ 02 октября 2010

Как насчет использования какого-нибудь ассоциативного массива ?

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