Использование интерфейса YcFunction для задания функции-обработчика на С#
Вы можете задать функцию-обработчик на C#, реализовав интерфейс YcFunction
Важно
Вы должны указать оба значения для параметров типа YcFunction
, причем первый тип является типом входного аргумента, а второй — типом возвращаемого значения. Также у метода handle
есть второй аргумент — контекст вызова.
Пример корректного обработчика:
public class Handler : YcFunction<int, String> {
public String FunctionHandler(int i, Context c) {
return String.valueOf(i);
}
}
Примеры некорректных обработчиков:
// у YcFunction указан лишь один тип параметра
// у Handler не должно быть типов-параметров
public class Handler<T> : YcFunction<T, int> {
public int FunctionHandler(T i, Context c) {
return 2;
}
}
// у YcFunction не указаны оба типа параметра
public class Handler : YcFunction {
public Object FunctionHandler(Object i, Context c) {
return i;
}
}
Подробнее о требованиях к обработчику см. в разделе Модель программирования на языке C#.
Вы можете использовать любые классы в качестве входного и возвращаемого типов.
Примечание
Поля этих классов могут иметь любые модификаторы доступаgetter
. В противном случае поле не попадет в ответ.
Пример
Вывод информации о функции
Следующая функция:
- Получает на вход число.
- Выводит данные о функции, взятые из контекста вызова, в журнал выполнения
- Возвращает данные о том, является ли переданное число четным.
Важно
Функцию необходимо вызывать с помощью CLI Yandex Cloud или с помощью HTTP-запроса с параметром ?integration=raw
.
Файл Handler.cs:
using Yandex.Cloud.Functions;
public class Handler : YcFunction<int, bool> {
public bool FunctionHandler(int number, Context c) {
Console.WriteLine($"Function name: {c.FunctionId}");
Console.WriteLine($"Function version: {c.FunctionVersion}");
Console.WriteLine($"Service account token: {c.TokenJson}");
return number % 2 == 0;
}
}
Пример входных данных:
41
В журнале будет напечатано:
Function name: <название_функции>
Function version: <идентификатор_версии_функции>
Service account token: <токен_сервисного_аккаунта>
Возвращаемая строка:
false