/// <summary>
        /// Удалить инстанс
        /// </summary>
        /// <param name="instanceName">Имя инстанса</param>
        /// <returns>Существал ли</returns>
        public override bool RemoveInstance(string instanceName)
        {
            InternalInstanceInMultiInstanceCategory inst = null;

            if (_instances.TryRemove(instanceName, out inst))
            {
                inst.OnRemoveFromMultiInstanceCategory();
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// Получение или создание инстанса
        /// </summary>
        /// <param name="instanceName">Имя инстанса</param>
        /// <returns>Инстанс</returns>
        public override InstanceInMultiInstanceCategory this[string instanceName]
        {
            get
            {
                InternalInstanceInMultiInstanceCategory result = null;
                if (!_instances.TryGetValue(instanceName, out result))
                {
                    result = _instances.GetOrAdd(instanceName, new InternalInstanceInMultiInstanceCategory(this, instanceName));
                }

                return(result);
            }
        }