Azure / Azure/durabletask

Support method overloading in AddTaskActivitiesFromX

Aperta
#795 5 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C#
Stelle
1.7k
Fork
335
Merge medio
2g 23h
PR unite (30g)
6

Descrizione

When trying to call AddTaskActivitiesFromInterface with an interface that has multiple signatures of the same mehtod name we encounter this exception:
```
Duplicate entry detected: IResourceManagerUtils.GetResourcesAsync
System.InvalidOperationException: Duplicate entry detected: IResourceManagerUtils.GetResourcesAsync
at DurableTask.Core.NameVersionObjectManager`1.Add(ObjectCreator`1 creator) in /_/src/DurableTask.Core/NameVersionObjectManager.cs:line 31
at DurableTask.Core.TaskHubWorker.AddTaskActivitiesFromInterface(Type interface, Object activities, Boolean useFullyQualifiedMethodNames) in /_/src/DurableTask.Core/TaskHubWorker.cs:line 393
```

The cause is pretty self-explanatory, since only the method names is used to describe the activity, and the other components of the method signature are ignored, a conflict is crated.
Perhaps the version could be utilized to correlate each overload with a dedicated activity? Though I'm not sure how backward-compatibility is preserved in that way

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia in src/DurableTask.Core/TaskHubWorker.cs da AddTaskActivitiesFromInterface e analizza NameVersionObjectManager.Add in src/DurableTask.Core/NameVersionObjectManager.cs. Riproduci il problema con un’interfaccia contenente più firme per uno stesso nome di metodo, quindi determina un modo retrocompatibile per distinguere gli overload; il lavoro è completato quando la registrazione non genera più l’eccezione di voce duplicata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp
Ambito
backend
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.