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.
Motivation
Currently, MagicOnion's Filter doesn't support constructor injection at handler build time. I think Filters should support DI and constructor injection as same as Service and StreamingHub. It will introduce avoiding direct use of ServiceLocator and improves testability.
Changes in this pull request
MagicOnionOptions.GlobalFilters
andMagicOnionOptions.GlobalStreamingHubFilters
changed from filter attribute arrays to List that accepts filter type and instance. (breaking changes)FromServiceFilterAttribute
(a filter will be provided byIServiceLocator
) andFromTypeFilterAttribute
(a filter will be instantiated from Type). These are similar to ASP.NET Core'sServiceFilterAttribute
andTypeFilterAttribute
.Code samples
Register filters on startup
Register filters using attributes with constructor injection.