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

リンクブライアンの提供からわかるように、ジェネリック型はAzureFunctionではサポートされていません。

WebJobs SDKは、FunctionName属性を検索するときに、ジェネリック型を明示的に破棄します。

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

ソースコードを参照してください。

参照:

  1. https://github.com/Azure/Azure-Functions/issues/735
  2. Azure関数がジェネリックスで機能しないのはなぜですか?