Вот хороший путь (не мой, исходная ссылка здесь: http://sujitpal.blogspot.com/2007/03/accessing-spring-beans-from-legacy-code.html
я использовал этот подход, и он хорошо работает. В основном это - простой боб, который содержит (статическую) ссылку на контекст приложения. Путем ссылки на него в пружинной конфигурации это инициализируется.
Смотрят на оригинал касательно, это очень ясно.
Я указал на 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; }
}
Весь смысл перечислений состоит в том, чтобы быть порядковыми константами.
Однако вы можете добиться желаемого, используя метод расширения:
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();
Ваш класс операции
не будет компилироваться как есть ... вы не объявили тип name1 и name2 ...
Но это подход Я бы взял ... да.
Если вы сделаете это структурой, тогда она станет типом значения, который может быть, а может и не быть тем, что вы хотели ...
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
}