Azure-Funktionen: Generischer Typ als Eingabeparameter

Dec 02 2020

Ich suche nach einem idealen Ansatz für eine Azure-Funktion, um generische Eingabeparameter zu verarbeiten. Zum Beispiel:

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

Grundsätzlich sollte "SendToQueueActivity" in der Lage sein, jedes Objekt vom Typ T zu senden.

Der obige Code funktioniert nicht. Wenn die Funktionsbindung keine Generika unterstützt, sollte dies der richtige Ansatz sein, damit sich die Funktion je nach Eingabetyp unterschiedlich verhält. Ich suche nach einer saubereren Art der Implementierung als nach der Verwendung eines "dynamischen" Typs.

Vielen Dank für Ihre Zeit und Ihre Beiträge.

Antworten

DorisLv Dec 02 2020 at 09:54

Wie aus dem Link Bryan hervorgeht, wird der generische Typ in der Azure-Funktion nicht unterstützt.

Das WebJobs SDK verwirft generische Typen explizit, wenn nach dem FunctionName-Attribut gesucht wird:

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

Siehe Quellcode .

Referenz:

  1. https://github.com/Azure/Azure-Functions/issues/735
  2. Warum funktioniert die Azure-Funktion nicht mit Generika?