/// <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(); }
/// <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); }