Контекстно-независимые и контекстно-связанные типы

Контекстно-независимые и контекстно-связанные типы

Типы .NET которые не предъявляют никаких специальных контекстных требований, называются контекстно-независимыми объектами. Эти объекты доступны из любого места в рамках соответствующего домена приложения, без каких бы то ни было особых требований к среде выполнения. Построение контекстно-независимых объектов не требует больших усилий, поскольку ничего специального делать не приходится (в частности, не требуется наделять тип контекстными атрибутами или получать производные базового класса System.ContextBoundObject).

// Контекстно-независимый объект загружается в контекст 0.

public class SportsCar()

С другой стороны, объекты, которые требуют контекстного размещения, называются контекстно-связанными объектами, и они должны быть производными от базового класса System.ContextBoundObject. Этот базовый класс закрепляет тот факт, что соответствующий объект сможет правильно функционировать только в рамках контекста, в котором он был создан. С учетом роли контекста .NET должно быть ясно, что в случае, когда контекстно-связанный объект оказывается в несоответствующем контексте, в любой момент могут возникнуть проблемы.

Вдобавок к необходимости получения типа из System.ContextBoundObject, контекстно-связанный тип будет наделен рядом специальных атрибутов .NET, называемых контекстными атрибутами (что вполне логично). Все контекстные атрибуты получаются из базового класса. System.Runtime.Remoting.Contexts. ContextAttribute:

public class System.Runtime.Remoting.Contexts.ContextAttribute: Attribute, IContextAttribute, IContextProperty {

 public ContextAttribute(string name);

 public string Name { virtual get; }

 public object TypeId { virtual get; }

 public virtual bool Equals(object o);

 public virtual void Freeze(System.Runtime.Remoting.Contexts.Context newContext);

 public virtual int GetHashCode();

 public virtual void GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage сtorMsg);

 public Type GetType();

 public virtual bool IsContextOK(System.Runtime.Remoting.Contexts.Context ctx, System.Runtime.Remoting.Activation.IConstructionCallMessage ctorMsg);

 public virtual bool IsDefaultAttribute();

 public virtual bool IsNewContextOK(System.Runtime.Remoting.Contexts.Context newCtx);

 public virtual bool Match(object obj);

 public virtual string ToString();

}

Поскольку класс ContextAttribute не является изолированным, вполне возможно строить свои собственные пользовательские контекстные атрибуты (для этого следует получить класс, производный от ContextAttribute, и переопределить необходимые виртуальные методы). После этого вы сможете создать пользовательский программный код, отвечающий на контекстные установки.

Замечание. В этой книге не рассматриваются подробности создания пользовательских контекстов объектов, но если вы заинтересованы узнать об этом больше, прочитайте книгу Applied .NET Attributes (Apress, 2003).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Связанные документы

Из книги Реестр Windows автора Климов Александр

Связанные документы В последних версиях Windows появилось понятие сопоставленных файлов. Например, если вы собираетесь переместить или удалить html-документ, то будут также перемещены или удалены и сопоставленные с этим документом файлы, которые содержаться в папке


Базовые и связанные размеры

Из книги AutoCAD 2009 автора Орлов Андрей Александрович

Базовые и связанные размеры Базовые и связанные размеры относятся к линейным, которые совместно используют общие выносные линии. Базовый размер также называют размером с базовой линией, так как многие его свойства измеряются относительно общей характерной черты.


Типы, характеризуемые значениями, ссылочные типы и оператор присваивания

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Типы, характеризуемые значениями, ссылочные типы и оператор присваивания Теперь изучите следующий метод Main() и рассмотрите его вывод, показанный на рис. 3.12.static void Main(string[] args) { Console.WriteLine("*** Типы, характеризуемые значением / Ссылочные типы ***"); Console.WriteLine(-› Создание p1"); MyPoint


Типы, характеризуемые значениями и содержащие ссылочные типы

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Типы, характеризуемые значениями и содержащие ссылочные типы Теперь, когда вы чувствуете разницу между типами, характеризуемыми значением, и ссылочными типами, давайте рассмотрим более сложный пример. Предположим, что имеется следующий ссылочный тип (класс),


Типы, характеризуемые значениями, и ссылочные типы: заключительные замечания

Из книги Человеческий фактор в программировании автора Константин Ларри Л

Типы, характеризуемые значениями, и ссылочные типы: заключительные замечания Чтобы завершить обсуждение данной темы, изучите информацию табл. 3.8, в которой приводится краткая сводка основных отличий между типами, характеризуемыми значением, и ссылочными типами.Таблица


Определение контекстно-связанных объектов

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Определение контекстно-связанных объектов Чтобы определить класс (SportsCarTS), автоматически поддерживающий потоковую безопасность, без добавления в него сложной логики синхронизации патока при реализации членов, следует взять объект, производный от ContextBoundObject, и применить


Связанные файлы

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Связанные файлы В связи с тем что в профессиональной графике файлы изображений могут достигать большого размера – действительно большого, десятки и сотни мегабайт, – многие программы макетирования и верстки не включают файлы изображений в документ. Так поступает и


48 Связанные объекты

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

48 Связанные объекты Что делает тот или иной предмет легким для понимания? Что делает тот или иной предмет простым в использовании? Что превращает совокупность объектов — не отдельных, а представленных в определенном контексте — в набор рабочих инструментов? Возьмем


У15.5 Связанные стеки

Из книги VBA для чайников автора Каммингс Стив

У15.5 Связанные стеки Основываясь на классах STACK и LINKED_LIST, постройте класс LINKED_STACK, описывающий реализацию стека как связного


1.7.4 Связанные документы

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

1.7.4 Связанные документы Серия RFC не содержит спецификаций протоколов и была опубликована как отдельный набор документов For Your Information (FYI — К вашему сведению). Например: RFC 1325 Answers to commonly asked "new Internet user" questions (Ответы на наиболее распространенные вопросы новых пользователей


18.1.3. Ограничения, связанные со временем

Из книги MySQL 5.0. Библиотека программиста автора Гольцман Виктор Иосифович

18.1.3. Ограничения, связанные со временем В 32-разрядных системах Linux, как и в большинстве систем Unix, переменная time_t является целым числом со знаком длиной 32 бита. Это означает, что в 10:14:07 вечера 18 января (четверг) 2038 года она переполнится. Поэтому время 10:14:08 вечера 18 января


Контекстно-зависимая справка

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Контекстно-зависимая справка В редакторе Visual Basic клавиша F1 вызывает контекстно-зависимую справку, т.е. открывает перед вами именно тот раздел справки, который соответствует работе, выполняемой вами в момент вызова. То, что вы увидите, зависит от типа окна, которое будет в


6.4. Проблемы, связанные с блокировками

Из книги автора

6.4. Проблемы, связанные с блокировками В этом разделе мы рассмотрим только внутренние блокировки, используемые сервером MySQL при совместной работе нескольких потоков с одними и теми же данными, и не коснемся внешних блокировок, обеспечивающих координацию работы сервера


Классы коллекций и связанные типы

Из книги автора

Классы коллекций и связанные типы List<T> Динамический массив Stack<T> Стек - набор элементов, реализованных по принципу последний вошел-первый вышел Queue<T> Очередь - набор элементов, реализованных по принципу первый вошел-первый вышел LinkedList<T>


Типы, связанные с регулярными выражениями

Из книги автора

Типы, связанные с регулярными выражениями Regex Представляет регулярное выражение Match Представляет результаты из отдельного совпадения регулярного выражения MatchEvaluator Представляет метод, вызываемый при обнаружении совпадения в Regex.Replace MatchCollection