DkmDataContainer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Дкмдатаконтаинер — это стандартный блок, используемый в этом API. Он позволяет многим объектам в этом API содержать "виртуальные поля", которые добавляются любым компонентом в системе. Это похоже на строго типизированную версию концепции "expando" в JScript.
Правила для Дкмдатаконтаинер: 1. Все объекты "Reference" в системе наследуют от Дкмдатаконтаинер. Ссылочные объекты отправляются компонентом Dispatcher этой системы, а также в различных маршалинговых точках (управляемое машинное управление > , управляемое с помощью машинного кода, > Удаленное управление) сохраняется удостоверение ссылки на объект. Объекты "value" не наследуют от Дкмдатаконтаинер, так как система не следит за этими объектами, поэтому при любом переходе маршалинга значение объекта копируется. 2. "Виртуальные поля" этих объектов, которые наследуют от Дкмдатаконтаинер, называются элементами данных. 3. Элементы данных являются ЧАСТНЫМи для компонента, который их добавил. Эта функция не может использоваться для совместного использования полей в границах компонентов. 4. Элементы данных являются экземплярами класса элемента данных. В управляемом коде классы элементов данных наследуют от Дкмдатаитем, чтобы обозначать их как элемент данных. В машинном коде элементы данных наследуются от IUnknown. 5. Как правило, компоненту никогда не нужно удалять элемент данных. Это связано с тем, что элементы данных автоматически удаляются при закрытии объекта контейнера.
public ref class DkmDataContainer abstract : MarshalByRefObject
public abstract class DkmDataContainer : MarshalByRefObject
type DkmDataContainer = class
inherit MarshalByRefObject
Public MustInherit Class DkmDataContainer
Inherits MarshalByRefObject
- Наследование
-
DkmDataContainer
- Производный
Примеры
Пример класса элемента данных. В управляемом коде элементы данных должны наследовать от класса Дкмдатаитем Алиаслог: Дкмдатаитем {ReadOnly String LogPath; ReadOnly с доступом только для чтения. Public Алиаслог (строковый журнал) {LogPath = log; Модуль записи = новый StreamWriter (log); } Элементы данных могут переопределять метод OnClose для получения уведомлений при закрытии объекта данных//контейнера (Дкмклралиас в нашем примере). защищенное переопределение void OnClose () {писатель. Close ();}} Создайте новый экземпляр класса элемента данных с примером Алиаслог журнал = New Алиаслог ("c: \ foo. log"); элементы данных могут быть переданы в метод Create... Дкмклралиас Alias = Дкмклралиас. Create ("Ексампленаме", log); // ... можно также добавить с помощью псевдонима Сетдатаитем. Сетдатаитем < алиаслог > (Дкмдатакреатиондиспоситион. CreateAlways, log); Затем значение можно получить с помощью Жетдатаитем Алиаслог Find = Alias. Жетдатаитем < алиаслог > ();
Свойства
| IsUnloaded |
Возвращает значение true, если для данного объекта было вызвано событие "выгружено" (например, вызывается метод Дкмсреад:: Unload), или значение, если объект был закрыт. Обратите внимание, что необходимо использовать осторожность при проверке этого состояния как, без синхронизации, возвращаемое состояние может больше не быть точным после считывания инструкции. |
Методы
| GetDataItem<T>() |
Возвращает экземпляр элемента "t", который был добавлен в этот экземпляр контейнера. Если этот контейнер не содержит 'T, эта функция возвратит значение null. |
| RemoveDataItem<T>() |
Удалить экземпляр из этого контейнера. Обычно нет необходимости вызывать этот метод, так как контейнер данных будет автоматически очищаться при закрытии объекта. |
| SetDataItem<T>(DkmDataCreationDisposition, T) |
Поместите новый элемент в контейнер данных. |