Support method overloading in AddTaskActivitiesFromX
- Vorherrschende Sprache
- C#
- Sterne
- 1.7k
- Forks
- 335
- Ø Merge
- 2 T. 23 Std.
- Gemergte PRs (30 T.)
- 6
Beschreibung
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
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne in src/DurableTask.Core/TaskHubWorker.cs bei AddTaskActivitiesFromInterface und untersuche NameVersionObjectManager.Add in src/DurableTask.Core/NameVersionObjectManager.cs. Reproduziere den Fehler mit einem Interface, das mehrere Signaturen für einen Methodennamen enthält, und ermittle eine abwärtskompatible Möglichkeit, Überladungen zu unterscheiden; abgeschlossen ist die Aufgabe, wenn die Registrierung nicht mehr die Ausnahme wegen eines doppelten Eintrags auslöst.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- csharp
- Bereich
- backend
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100