Книга: C# для профессионалов. Том II
Атрибуты и свойства
Атрибуты и свойства
Класс атрибута контекста является прежде всего атрибутом. Более подробно можно прочитать об этом в главе 6. Классы атрибутов контекста должны реализовать интерфейс IContextAttribute
. Специальный класс атрибута контекста можно вывести из класса ContextAttribute
, так как этот класс уже имеет используемую по умолчанию реализацию данного интерфейса.
В .NET Framework содержатся два класса атрибутов контекста: System.Runtime.Remoting.Contexts.SynchronizationAttribute
и System.Runtime.Remoting.Contexts.ThreadAffinityAttribute
. С помощью атрибута ThreadAffinity
можно задать, что только один поток выполнения получает доступ к полям экземпляра и методам ограниченного контекстом класса. Это полезно для объектов интерфейса пользователя, так как дескрипторы окон определяются относительно потока выполнения. Атрибут Synchronization
, с другой стороны, определяет требования синхронизации. Здесь можно задать, что несколько потоков выполнения не вправе получить доступ к объекту одновременно, но поток выполнения, получающий доступ к объекту, может меняться.
С помощью этих атрибутов в конструкторе задаются четыре значения:
? NOT_SUPPORTED
определяет, что экземпляр класса не должен создаваться в контексте, который имеет либо сходство с потоком выполнения, либо с множеством синхронизации.
? REQUIRED
устанавливает, что требуется контекст со сходством с потоком выполнения/синхронизацией.
? REQUIRES_NEW
всегда обеспечивает получение нового контекста.
? SUPPORTED
означает, что независимо от того, какой контекст мы получаем, объект сможет в нем существовать.
- Внешние атрибуты
- 2.2.2. Сущности м атрибуты
- 6.7. Атрибуты свойств
- 15.4.1. HTML-атрибуты как свойства объектов Element
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- 1.3.5. Методы и атрибуты
- 2. Домены и атрибуты
- 4. Свойства унарных операций
- 3. Свойства бинарных операций
- 4. Виртуальные атрибуты
- Ключевые свойства форм
- У файла и каталога есть атрибуты (например: Скрытый, Только чтение). Как ими управлять из командной строки?