Azure Functions: typ ogólny jako parametr wejściowy
Szukam idealnego podejścia do posiadania funkcji Azure do obsługi parametru wejściowego typu ogólnego. Na przykład:
[FunctionName(nameof(SendToQueueActivityFunction))]
public async Task SendToQueueActivity<T>([ActivityTrigger] SendToQueueRequest<T> sendToQueueRequest)
Zasadniczo „SendToQueueActivity” powinien mieć możliwość wysłania dowolnego obiektu typu T.
Powyższy kod nie działa. Jeśli powiązanie funkcji nie obsługuje typów ogólnych, jakie powinno być właściwe podejście, aby funkcja zachowywała się inaczej w zależności od typów danych wejściowych. Szukam bardziej przejrzystego sposobu implementacji niż czegoś takiego jak użycie typu „dynamicznego”.
Dziękuję za poświęcony czas i wkład.
Odpowiedzi
Jak widać na podstawie danych Link Bryan, typ ogólny nie jest obsługiwany w Azure Function.
Zestaw SDK zadań WebJobs jawnie odrzuca typy ogólne podczas wyszukiwania atrybutu FunctionName:
return type.IsClass && (!type.IsAbstract || type.IsSealed) && type.IsPublic && !type.ContainsGenericParameters;
Zapoznaj się z kodem źródłowym .
Odniesienie:
- https://github.com/Azure/Azure-Functions/issues/735
- Dlaczego funkcja platformy Azure nie działa z typami generycznymi?