Cake - это C #, поэтому вы можете создавать классы, методы, как в обычном C #
Т.е. объявить класс в файле с тортом
public class MyClass
{
public void MyMethod()
{
}
public static void MyStaticMethod()
{
}
}
и затем использовать его как скрипт
var myClass = new MyClass();
// Call instance method
myClass.MyMethod();
//Call static method
MyClass.MyStaticMethod();
Cake DSL основан на сценариях Roslyn, поэтому есть некоторые различия, код по существу уже в типе, поэтому вы можете объявить метод без класса для повторного использования
public void MyMethod()
{
}
и тогда он может быть вызван как глобальные методы
MyMethod();
Несколько ошибок, выполнение класса изменит область видимости, поэтому у вас не будет доступа к псевдонимам / контексту и глобальным методам.Вы можете обойти это, то есть передав ICakeContext в качестве параметра классу
public class MyClass
{
ICakeContext Context { get; }
public MyClass(ICakeContext context)
{
Context = context;
}
public void MyMethod()
{
Context.Information("Hello");
}
}
, а затем использовать его следующим образом:
// pass reference to Cake context
var myClass = new MyClass(Context);
// Call instance method which uses an Cake alias.
myClass.MyMethod();
У вас могут быть методы расширения, но они не могут быть вкласс, пример:
public static void MyMethod(this ICakeContext context, string message)
{
context.Information(message);
}
Context.MyMethod("Hello");