ModelBinding\ModelBinderFactory.cs (16)
20/// A factory for <see cref="IModelBinder"/> instances.
26private readonly ConcurrentDictionary<Key, IModelBinder> _cache;
43_cache = new ConcurrentDictionary<Key, IModelBinder>();
51public IModelBinder CreateBinder(ModelBinderFactoryContext context)
63if (TryGetCachedBinder(context.Metadata, context.CacheToken, out var binder))
87private IModelBinder CreateBinderCoreCached(DefaultModelBinderProviderContext providerContext, object? token)
89if (TryGetCachedBinder(providerContext.Metadata, token, out var binder))
106private IModelBinder? CreateBinderCoreUncached(DefaultModelBinderProviderContext providerContext, object? token)
127if (visited.TryGetValue(key, out var binder))
146IModelBinder? result = null;
174private void AddToCache(ModelMetadata metadata, object? cacheToken, IModelBinder binder)
187private bool TryGetCachedBinder(ModelMetadata metadata, object? cacheToken, [NotNullWhen(true)] out IModelBinder? binder)
224Visited = new Dictionary<Key, IModelBinder?>();
246public Dictionary<Key, IModelBinder?> Visited { get; }
250public override IModelBinder CreateBinder(ModelMetadata metadata)
258public override IModelBinder CreateBinder(ModelMetadata metadata, BindingInfo bindingInfo)