/// <summary> /// Создает ссылку на объект. /// </summary> /// <param name="полноеИмяТипа">Полное имя типа объекта, например "Справочник.Номенклатура".</param> /// <param name="указатель">Уникальный идентификатор ссылки.</param> /// <returns>Возвращает ссылку на объект.</returns> public ОбъектСсылка ПолучитьОбъектСсылку(string полноеИмяТипа, Guid указатель) { УзелМетаданных узелМетаданных; if (!this.Клиент.Метаданные.ПопыткаПолучить(полноеИмяТипа, out узелМетаданных)) { throw new ArgumentException(String.Format("Ошибка при получении ссылки на объект. Не удалось обнаружить объект метаданных \"{0}\".", полноеИмяТипа), "полноеИмяТипа"); } Guid идСсылки = КонтекстДанных.ПолучитьОбобщенныйИдентификаторСсылки(полноеИмяТипа, указатель.ToString()); Ссылка ссылка = null; WeakReference <Ссылка> слабСсылка = null; if (this.references.TryGetValue(идСсылки, out слабСсылка) && слабСсылка.TryGetTarget(out ссылка)) { return((ОбъектСсылка)ссылка); } switch (((МетаданныеОбъект)узелМетаданных).ТипКоллекции()) { case ТипКоллекции.Справочник: ссылка = new СправочникСсылка(this.bromClient, узелМетаданных.Имя(), указатель); break; case ТипКоллекции.Документ: ссылка = new ДокументСсылка(this.bromClient, узелМетаданных.Имя(), указатель); break; case ТипКоллекции.ПланВидовХарактеристик: ссылка = new ПланВидовХарактеристикСсылка(this.bromClient, узелМетаданных.Имя(), указатель); break; case ТипКоллекции.ПланСчетов: ссылка = new ПланСчетовСсылка(this.bromClient, узелМетаданных.Имя(), указатель); break; case ТипКоллекции.ПланВидовРасчета: ссылка = new ПланВидовРасчетаСсылка(this.bromClient, узелМетаданных.Имя(), указатель); break; case ТипКоллекции.Задача: ссылка = new ЗадачаСсылка(this.bromClient, узелМетаданных.Имя(), указатель); break; case ТипКоллекции.БизнесПроцесс: ссылка = new БизнесПроцессСсылка(this.bromClient, узелМетаданных.Имя(), указатель); break; default: throw new Exception("Указан неверный тип коллекции."); } this.references[идСсылки] = new WeakReference <Ссылка>(ссылка); return((ОбъектСсылка)ссылка); }
internal ЗадачаОбъект(ЗадачаСсылка ссылка) : base(ссылка) { }