DkmDataContainer クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
DkmDataContainer は、この API 全体で使用される構成要素です。 これにより、この API のオブジェクトの多くには、システム内の任意のコンポーネントによって追加される "仮想フィールド" が含まれます。 これは、JScript の "expando" 概念のタイプ セーフ バージョンに似ています。
DkmDataContainer の規則:
- システム内のすべての 'reference' オブジェクトは、DkmDataContainer から継承されます。 参照オブジェクトは、このシステムのディスパッチャー コンポーネントによって追跡され、さまざまなマーシャリング ポイント (マネージド> ネイティブ、ネイティブ>マネージド、リモート処理) でオブジェクト参照 ID が保持されます。 'Value' オブジェクトは DkmDataContainer から継承されません。システムはこれらのオブジェクトを追跡しないため、マーシャリング遷移時にはオブジェクトの値がコピーされます。
- DkmDataContainer から継承されるこれらのオブジェクトの "仮想フィールド" は、データ項目と呼ばれます。
- データ項目は、追加したコンポーネントに対して PRIVATE です。 この機能を使用して、コンポーネントの境界を越えてフィールドを共有することはできません。
- データ項目は、データ項目クラスのインスタンスです。 マネージド コードでは、データ項目クラスは DkmDataItem から継承され、データ項目として識別されます。 ネイティブ コードでは、データ項目は IUnknown から継承されます。
- 通常、コンポーネントはデータ項目を削除する必要はありません。 これは、コンテナー オブジェクトが閉じられると、データ項目が自動的に削除されるためです。
public ref class DkmDataContainer abstract : MarshalByRefObject
public abstract class DkmDataContainer : MarshalByRefObject
public abstract class DkmDataContainer
type DkmDataContainer = class
inherit MarshalByRefObject
type DkmDataContainer = class
Public MustInherit Class DkmDataContainer
Inherits MarshalByRefObject
Public MustInherit Class DkmDataContainer
- 継承
-
DkmDataContainer
- 継承
-
DkmDataContainer
- 派生
例
データ項目クラスの例。 マネージド コードでは、データ項目は DkmDataItem クラス AliasLog : DkmDataItem { readonly string LogPath; readonly StreamWriter Writer から継承する必要があります。
public AliasLog(string log)
{
LogPath = log;
Writer = new StreamWriter(log);
}
// Data items can override the 'OnClose' method to receive notification when the data
// container object (DkmClrAlias in our example) is closed.
protected override void OnClose()
{
Writer.Close();
}
}
サンプル データ項目クラス AliasLog log = new AliasLog("c:\foo.log") の新しいインスタンスをCreateします。
データ項目は create メソッドに渡すことができます...DkmClrAlias エイリアス = DkmClrAlias。Create("ExampleName", log);
...または、SetDataItem エイリアスを使用して追加できます。SetDataItem<AliasLog>(DkmDataCreationDisposition.CreateAlways, log);
その後、GetDataItem AliasLog find = alias を使用して値を取得できます。GetDataItem<AliasLog>();
プロパティ
IsUnloaded |
このオブジェクトに対して 'unloaded' イベントが発生した場合 (例: DkmThread::Unload が呼び出されます)、またはオブジェクトが閉じている場合は true を返します。 同期なしでこの状態を確認する場合は、読み取った後に返される状態が正確でなくなる可能性があるため、注意が必要です。 |
メソッド
GetDataItem<T>() |
このコンテナー インスタンスに追加された 'T' のインスタンスを取得します。 このコンテナーに 'T' が含まれていない場合、この関数は null を返します。 |
RemoveDataItem<T>() |
このコンテナーから 'T' のインスタンスを削除します。 通常、オブジェクトが閉じられるとデータ コンテナーが自動的に空になるので、このメソッドを呼び出す必要があります。 |
SetDataItem<T>(DkmDataCreationDisposition, T) |
データ コンテナーに新しい項目を配置します。 |