This is a major refactor of how IBinderMetadata interacts with model binders and value providers. We're doing this to support better extensibility for metadata in ApiExplorer. You'll notice a bunch of deleted code in DefaultApiDescriptionProvider that maps metadata marker interfaces to a fixed list of Api sources. This is replaced now with IBindingSourceMetadata - which also replaces the hierarchy of marker interfaces. Now user code can create an arbitrary binding source and have a consistent API for model-binders, value-providers and full-visibility in ApiExplorer as well. Additonally, there's some error checking in place that better enforces the constraints we already have in the system. IE you can't create a 'greedy' model binder that uses value-provider data. Two additional enhancements are planned for followup PRs: 1. Add a BindingSource property to model-metadata. This will remove some duplication, but I want to delay it because it would touch another 10 or so files. 2. Add an extensibility interface for our 'special' model binders like the file binder so these can show up in ApiExplorer as well. |
||
|---|---|---|
| .. | ||
| CompositeValueProviderTests.cs | ||
| DictionaryBasedValueProviderTests.cs | ||
| ElementalValueProviderTests.cs | ||
| FormValueProviderFactoryTests.cs | ||
| QueryStringValueProviderFactoryTest.cs | ||
| ReadableStringCollectionValueProviderTest.cs | ||
| ValueProviderResultTest.cs | ||