public virtual TOptions Get(string name) { name = name ?? Options.DefaultName; // Store the options in our instance cache return(_cache.GetOrAdd(name, () => _factory.Create(name))); }
/// <summary> /// Returns a configured <typeparamref name="TOptions"/> instance with the given <paramref name="name"/>. /// </summary> public virtual TOptions Get(string?name) { name ??= Options.DefaultName; if (!_cache.TryGetValue(name, out TOptions? options)) { // Store the options in our instance cache. Avoid closure on fast path by storing state into scoped locals. IOptionsFactory <TOptions> localFactory = _factory; string localName = name; options = _cache.GetOrAdd(name, () => localFactory.Create(localName)); } return(options); }