/// <summary> /// Получение или создание инстанса /// </summary> /// <param name="instanceName">Имя инстанса</param> /// <returns>Инстанс</returns> public override InstanceInMultiInstanceCategory this[string instanceName] { get { CompositeInstanceInMultiInstanceCategory result = null; if (!_instances.TryGetValue(instanceName, out result)) { result = _instances.GetOrAdd(instanceName, new CompositeInstanceInMultiInstanceCategory(this, instanceName, _wrappedCategories.Select(wc => wc[instanceName]))); } return(result); } }
/// <summary> /// Удалить инстанс /// </summary> /// <param name="instanceName">Имя инстанса</param> /// <returns>Существал ли</returns> public override bool RemoveInstance(string instanceName) { CompositeInstanceInMultiInstanceCategory inst = null; if (_instances.TryRemove(instanceName, out inst)) { inst.OnRemoveFromMultiInstanceCategory(); foreach (var wrappedCat in _wrappedCategories) { wrappedCat.RemoveInstance(instanceName); } return(true); } return(false); }