У меня есть Groovy script
, который позволяет пользователю определять некоторые динамические свойства и методы, а затем выполняет пользовательское закрытие. Сценарий будет выглядеть следующим образом:Groovy - Код проверки кода закрытия перед выполнением
// init properties and methods dynamically at runtime
context.prop1 = "Some test value"
context.method1 = { String input ->
"exec " + input.toUpperCase()
}
// "this" is set to the context variable from above
run {
println method1(prop1)
}
Таким образом, в начале сценария, context
инициализируется с заданным пользователем свойств (например, prop1
) и методами (например, method1
). Затем контекст используется как указатель в закрытии запуска. Я достиг этого, динамически расширяя мета-класс контекста и устанавливая контекст как делегат закрытия запуска (с помощью стратегии DELEGATE_FIRST
в качестве стратегии разрешения).
В настоящее время я боюсь Тип проверки. Перед выполнением закрытия запуска я хотел бы проверить, действительно ли method1
ожидает prop1
. Я просмотрел аннотацию DelegatesTo, но это не работает для динамически расширенных объектов. Я также играл с АСТ, но поскольку мои знания по этой теме ограничены, я не нашел решения. Если то, что я хочу достичь, возможно, любые указатели в правильном направлении были бы весьма признательны.