Azure-Funktionen: Generischer Typ als Eingabeparameter
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
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:
- https://github.com/Azure/Azure-Functions/issues/735
- Warum funktioniert die Azure-Funktion nicht mit Generika?