Я занимаюсь рефакторингом сценария сборки Cake и решил ввести класс для хранения некоторых параметров сборки, которые часто передаются и/или существуют в глобальной области видимости.
Некоторые настройки берутся из аргументов и задаются с использованием синтаксиса Argument<T>(string name, string defaultValue)
.
Я хотел бы создать что-то вроде этого:
var context = BuildContext.FromArguments();
Для этого мне нужно получить экземпляр текущего ICakeContext. Я считаю, что причина этого в том, что все методы, определенные в сценариях торта, становятся методами специально созданного ICakeContext
, который, вероятно, наследуется от CakeContext
и, таким образом, может вызывать все его (расширенные) методы, но как только вы определяете класс, он становится вложенным. класс, у которого больше нет доступа к хорошим помощникам, таким как Argument<T>(name, defaultValue)
.
Я надеялся, что смогу либо сделать ICakeContext.Current
, либо просто пройти this
, как в BuildContext.FromArguments(this)
, или что-то подобное.
Но ключевое слово this
не разрешено на этом уровне скрипта Cake (не знаю почему, является ли верхний уровень статическим методом?
Итак, вопрос: как мне получить ссылку на текущий ICakeContext
?