Introduce OutcomeResilienceStrategy and drop some internals #1330
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Details on the issue fix or feature implementation
For both non-generic and generic strategies we use the same implementation. Ever bult-in strategy that handles the outcomes uses the same concepts.
object
To unify both of these and not split implementations we have used the
Invokers
that wrap the delegates into usable form for these strategies.I was thinking on how we can simplify this handling even more and came with generic
OutcomeResilienceStrategy<T>
. When deriving from this strategy, you can use delegates directly without any additional layers.So for example:
RetryResilienceStrategy<T>
- handles only results of type TRetryResilienceStrategy<object>
- handles all result types (non-generic strategy)This also allows us to drop all internal invokers. So far,
OutcomeResilienceStrategy<T>
is kept internal, but we can make it public later.Confirm the following