/// <summary>
        /// Инициализация инстанса
        /// </summary>
        /// <param name="parent">Родительская многоинстансовая категория</param>
        /// <param name="category">Обёртываемый инстанс</param>
        /// <param name="counters">Список счётчиков</param>
        internal void InitInstance(MultiInstanceCategoryWrapper parent, InstanceInMultiInstanceCategory category, List <CounterPropertyInfo> counters)
        {
            if (parent == null)
            {
                throw new ArgumentNullException("parent");
            }
            if (category == null)
            {
                throw new ArgumentNullException("category");
            }
            if (counters == null)
            {
                throw new ArgumentNullException("counters");
            }

            _category = category;
            _parent   = parent;

            foreach (var prop in counters)
            {
                var counter = _category.GetCounter(prop.GetCounterName(), prop.CounterType);

                if (counter.Type != prop.CounterType)
                {
                    throw new InvalidCounterTypeException(
                              string.Format("Counter types are not equal. Declared: {0}, Returned: {1}", prop.CounterType, counter.Type));
                }

                prop.SetCounterValue(this, counter);
            }

            AfterInit();
        }
コード例 #2
0
        /// <summary>
        /// Создание обёртки для категории с несколькими инстансами (см. также CreateSubCategory)
        /// </summary>
        /// <typeparam name="TInst">Тип инстанса</typeparam>
        /// <param name="name">Имя категории</param>
        /// <param name="description">Описание категории</param>
        /// <returns>Созданная обёртка</returns>
        public MultiInstanceCategoryWrapper <TInst> CreateMultiInstanceSubCategory <TInst>(string name, string description) where TInst : InstanceInMultiInstanceCategoryWrapper, new()
        {
            MultiInstanceCategoryWrapper <TInst> wrapper = new MultiInstanceCategoryWrapper <TInst>(name, description);
            var multi = _category.CreateMultiInstanceSubCategory(wrapper.Name, wrapper.Description);

            wrapper.Init(multi);
            return(wrapper);
        }