c#:How для использования перечисления для хранения строковых констант? [дубликат]

Вот хороший путь (не мой, исходная ссылка здесь: http://sujitpal.blogspot.com/2007/03/accessing-spring-beans-from-legacy-code.html

я использовал этот подход, и он хорошо работает. В основном это - простой боб, который содержит (статическую) ссылку на контекст приложения. Путем ссылки на него в пружинной конфигурации это инициализируется.

Смотрят на оригинал касательно, это очень ясно.

54
задан Community 23 May 2017 в 02:26
поделиться

4 ответа

Я указал на ChssPly, вы должны объявить date1 и date2 как параметры запроса (позиционные или именованные), а затем связать их. Здесь мы будем использовать именованные параметры. Обычный способ передачи именованных параметров запроса с помощью Grails - через карту :

def queryStr = "from Book b where b.releaseDate > :date1 and b.releaseDate < :date2"
Book.executeQuery(queryStr, [date1: date1, date2: date2])

См. Документацию executeQuery () , чтобы узнать подробности синтаксиса обоих параметров.

public sealed class Operation
{
    public static readonly Operation Name1 = new Operation("Name1");
    public static readonly Operation Name2 = new Operation("Name2");

    private Operation(string value)
    {
        Value = value;
    }

    public string Value { get; private set; }
}
104
ответ дан 7 November 2019 в 07:43
поделиться

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

  enum Operation
  {
      name1,
      name2
  }

  static class OperationTextExtender
  {
        public static String AsText(this Operation operation)
        {
              switch(operation)
              {
                    case Operation.name1: return "hmmm";
                    case Operation.name2: return "bdidwe";
                    ...
              }
        }
  }

  ...
  var test1 = Operation.name1;
  var test2 = test1.AsText();   
9
ответ дан 7 November 2019 в 07:43
поделиться

Ваш класс операции не будет компилироваться как есть ... вы не объявили тип name1 и name2 ...

Но это подход Я бы взял ... да.

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

0
ответ дан 7 November 2019 в 07:43
поделиться

You could do this using DescriptionAttribute, but then you'd have to write code to get the string out of the attribute.

public enum YourEnum
{
    [Description("YourName1")]
    Name1,

    [Description("YourName2")]
    Name2
}
40
ответ дан 7 November 2019 в 07:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: