示例#1
0
        /// <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);
        }
示例#2
0
 public DefaultModelBinderProviderContext(ModelBinderFactory factory, ModelBinderFactoryContext context)
 {
     Services = factory._serviceProvider;
     Metadata = context.Metadata;
 }