Simplify ProviderCache and make it instantiable since it is intentionally not thread safe #3312
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.
I saw this file in passing in a previous refactoring and noticed the possibilities in the PR title.
Commit 1: CacheEntry would make sense as a dictionary key if it took provider arguments into account. Since it doesn't, it's a "just in case we ever do this" construct which complicates the source code. It also has a marginal negative influence on dictionary performance by not being a struct and by not implementing IEquatable<>. I figured we could wait until we need it rather than adding even more code it.
Commit 2: static mutable things are good to avoid in general but especially when the mutations are not thread safe because you take away all control from the client code to isolate it to a single thread. Now, it's the responsibility of the code that instantiates it to not share the instance somewhere that could be accessed from another thread.