Beetje vaag misschien dus ik zal het een beetje proberen te omschrijven.
Ik heb een applicatie geschreven met een pluginsysteem en er zijn derden die plugins maken.
Nu ben ik zo zoetjes aan in wat libraries async (TAP pattern) functionaliteit aan het toevoegen, so far so good.
Nu wil een pluginbouwer die ook daadwerkelijk gaan gebruiken en daar loopt het spaak.
In de plugininterface (die ik aanlever) hebben de methods geen Task returntypes. Ook zitten er voids tussen.
De aanroepende code (aan mijn kant) loopt dat soort calls dan ook synchroon af.
Als de pluginbouwer zijn signature aanpast om bijv een void async te maken zodat ie in zijn code een await kan gebruiken denkt de code aan mijn kant dat ie meteen klaar is.
Ik snap ook wel hoe dat komt enzo, maar zit nu effe met een dilemma.
Plugin interface aanpassen zodat alles Task(T) wordt is niet ideaal omdat dan alle pluginbouwers moeten upgraden.
Tweede interface voor een soort v2 plugin doe ik liever (nog) niet.
Is er een manier hoe een pluginbouwer Tasks kan gebruiken zonder dat mijn code erover valt?
Of is er een manier om te detecteren vanuit mijn kant dat er async gebruikt wordt?
Dat laatste zal wel niet, maar wie weet heeft er iemand met hetzelfde bijltje gehakt
Ik heb een applicatie geschreven met een pluginsysteem en er zijn derden die plugins maken.
Nu ben ik zo zoetjes aan in wat libraries async (TAP pattern) functionaliteit aan het toevoegen, so far so good.
Nu wil een pluginbouwer die ook daadwerkelijk gaan gebruiken en daar loopt het spaak.
In de plugininterface (die ik aanlever) hebben de methods geen Task returntypes. Ook zitten er voids tussen.
De aanroepende code (aan mijn kant) loopt dat soort calls dan ook synchroon af.
Als de pluginbouwer zijn signature aanpast om bijv een void async te maken zodat ie in zijn code een await kan gebruiken denkt de code aan mijn kant dat ie meteen klaar is.
Ik snap ook wel hoe dat komt enzo, maar zit nu effe met een dilemma.
Plugin interface aanpassen zodat alles Task(T) wordt is niet ideaal omdat dan alle pluginbouwers moeten upgraden.
Tweede interface voor een soort v2 plugin doe ik liever (nog) niet.
Is er een manier hoe een pluginbouwer Tasks kan gebruiken zonder dat mijn code erover valt?
Of is er een manier om te detecteren vanuit mijn kant dat er async gebruikt wordt?
Dat laatste zal wel niet, maar wie weet heeft er iemand met hetzelfde bijltje gehakt