Функции Azure: универсальный тип в качестве входного параметра

Dec 02 2020

Я ищу идеальный подход для использования лазурной функции для обработки входного параметра универсального типа. Например:

    [FunctionName(nameof(SendToQueueActivityFunction))]
    public async Task SendToQueueActivity<T>([ActivityTrigger] SendToQueueRequest<T> sendToQueueRequest)

По сути, SendToQueueActivity должен иметь возможность отправлять любой объект типа T.

Приведенный выше код не работает. Если привязка функции не поддерживает универсальные шаблоны, то каков должен быть правильный подход к тому, чтобы функция вела себя по-разному в зависимости от типов ввода. Я ищу более чистый способ реализации, чем использование «динамического» типа.

Спасибо за ваше время и вклад.

Ответы

DorisLv Dec 02 2020 at 09:54

Как видно из ссылки, предоставленной Брайаном, универсальный тип не поддерживается в функции Azure.

SDK WebJobs явно отбрасывает общие типы при поиске атрибута FunctionName:

return type.IsClass
   && (!type.IsAbstract || type.IsSealed)
   && type.IsPublic
   && !type.ContainsGenericParameters;

Обратитесь к исходному коду .

Справка:

  1. https://github.com/Azure/Azure-Functions/issues/735
  2. Почему функция Azure не работает с универсальными шаблонами?