/// <inheritdoc /> public IModelBinder CreateBinder(ModelBinderFactoryContext context) { if (TryGetCachedBinder(context.Metadata, context.CacheToken, out var binder)) { return(binder); } var providerContext = new DefaultModelBinderProviderContext(this, context); foreach (var provider in _providers) { binder = provider.GetBinder(providerContext); if (binder != null) { break; } } if (binder == null) { throw new InvalidOperationException( $"Could not find binder for model type {context.Metadata.ModelType}"); } AddToCache(context.Metadata, context.CacheToken, binder); return(binder); }
public DefaultModelBinderProviderContext(ModelBinderFactory factory, ModelBinderFactoryContext context) { Services = factory._serviceProvider; Metadata = context.Metadata; }