Refactor settings arrays to ISet<T>
(to ensure unique values and make them easily mutable)
#16058
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.
Prerequisites
Description
Most configuration/options classes currently bind certain settings to arrays, which is mostly fine when configuring them from the
appsettings.json
files, but make adding new or removing default items in code a lot harder.Consider removing TIFF and adding PBM and TGA image file types on the
ContentImagingSettings
configuration. Even when using the spread element..
to make adding items to the array easier, removing an existing item requires filtering the existing array:With this PR applied, the
ImageFileTypes
is now anISet<string>
, which can easily be mutated:As a bonus, this won't add duplicate items to the set 🙌🏻 Additional improvements can be made by refactoring some settings to dictionaries, so they can be configured by unique key (e.g. RTE commands by alias, which would fix issue #14405). Other settings might benefit from being refactored as well, like the reserved paths and URLs (which would fix issue #12965).