feat: add methods for deleting and removing registered decorators for commands and queries for greater flexibility when managing external dependencies#358
Merged
valdisiljuconoks merged 1 commit intovaldisiljuconoks:masterfrom Jul 4, 2025
Conversation
… commands and queries for greater flexibility when managing external dependencies
valdisiljuconoks
approved these changes
Jul 4, 2025
52c43a0
into
valdisiljuconoks:master
2 of 3 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
There are some complications coming from the immutable way decorators are currently registered
The problem was originally spotted in the Optimizely packages, specifically method
AddDbLocalizationProvider, classIServiceCollectionExtensions, namespaceDbLocalizationProvider.AspNetCore. The registration for decorator happens before the custom configurations were injected, and since there is not a method to remove decorator, now we must useCachedGetAllResourcesHandler, which is underneath using_innercache, from which I would like to migrate to a custom solution.Line 47:
factory.ForQuery<GetAllResources.Query>().DecorateWith<CachedGetAllResourcesHandler>();Line 60:
setup?.Invoke(ctx);Obviously, we could solve it in the same file by "swapping" the lines and registering some decorator, which would block registration of
CachedGetAllResourcesHandler- but I believe it is much more useful to address the root cause here and create an alternative in case similar problems will be spotted in other places. I added two methods:AddOrReplaceDecoratorandRemoveDecorator- which could be handy. They allow to replace existing decorators or clear them completely, if using them is no longer expected.PR enables replacing externally registered decorators, therefore making the application more extensible and comfortable for developers in the long run.