Support method overloading in AddTaskActivitiesFromX
- 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