DkmDataContainer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Dkmdatacontainer ist ein Baustein, der in dieser API verwendet wird. Dadurch können viele der Objekte in dieser API "virtuelle Felder" enthalten, die von einer beliebigen Komponente im System hinzugefügt werden. Dies ähnelt einer typsicheren Version des "expando"-Konzepts in JScript.
Regeln für dkmdatacontainer: 1. Alle ' Reference '-Objekte im System erben von ' dkmdatacontainer '. Verweis Objekte werden von der Verteiler Komponente dieses Systems nachverfolgt, und an verschiedenen marshallingpunkten (verwaltete, systemeigene, systemeigene verwaltete > > , Remoting) wird die Objekt Verweis Identität beibehalten. Value-Objekte erben nicht von dkmdatacontainer, da diese Objekte vom System nicht verfolgt werden. Daher wird bei jedem Marshalling-Übergang der Wert des Objekts kopiert. 2. Die "virtuellen Felder" dieser Objekte, die von "dkmdatacontainer" erben, werden als Datenelemente bezeichnet. 3. Datenelemente sind für die Komponente, von der Sie hinzugefügt wurden, privat. Diese Funktion kann nicht verwendet werden, um Felder über Komponenten Grenzen hinweg freizugeben. 4. Datenelemente sind Instanzen einer Datenelement Klasse. In verwaltetem Code erben Datenelement Klassen von dkmdataitem, um Sie als Datenelement zu identifizieren. In nativem Code erben Datenelemente von IUnknown. 5. Normalerweise müsste eine Komponente nie ein Datenelement entfernen. Dies liegt daran, dass Datenelemente automatisch entfernt werden, wenn das Container Objekt geschlossen wird.
public ref class DkmDataContainer abstract : MarshalByRefObject
public abstract class DkmDataContainer : MarshalByRefObject
type DkmDataContainer = class
inherit MarshalByRefObject
Public MustInherit Class DkmDataContainer
Inherits MarshalByRefObject
- Vererbung
-
DkmDataContainer
- Abgeleitet
Beispiele
Beispiel für eine Datenelement Klasse. In verwaltetem Code müssen Datenelemente von der dkmdataitem-Klasse aliaslog geerbt werden: dkmdataitem {Schreib geschützter String logPath; Schreib geschützter StreamWriter-Writer; öffentliches aliaslog (Zeichen folgen Protokoll) {logPath = Log; Writer = neuer StreamWriter (Log); } Datenelemente können die OnClose-Methode überschreiben, um eine Benachrichtigung zu erhalten, wenn das Daten//Container Objekt (in unserem Beispiel dkmclralias) geschlossen wird. geschützte außer Kraft Setzung void OnClose () {Writer. Close ();}} Erstellen Sie eine neue Instanz der Beispiel Datenelement Klasse aliaslog Log = New aliaslog ("c: \ foo. log"); Datenelemente können an eine Create-Methode übermittelt werden... Dkmclralias Alias = dkmclralias. Create ("examplename", Log); // ... oder kann mithilfe des SetDataItem-Alias hinzugefügt werden. SetDataItem < aliaslog > (dkmdatacreationdisposition. kreatealways, Log); Anschließend kann der Wert mithilfe von GetDataItem aliaslog Find = Alias abgerufen werden. GetDataItem < aliaslog > ();
Eigenschaften
| IsUnloaded |
Gibt "true" zurück, wenn ein "entladen"-Ereignis für dieses Objekt ausgelöst wurde (Beispiel: dkmthread:: entladen wird aufgerufen) oder wenn das Objekt geschlossen wurde. Beachten Sie, dass bei der Überprüfung dieses Status, ohne Synchronisierung, der Status "zurückgegeben" möglicherweise nicht mehr genau der Anweisung entspricht, nachdem er gelesen wurde. |
Methoden
| GetDataItem<T>() |
Ruft die Instanz von 't ' ab, die dieser Container Instanz hinzugefügt wurde. Wenn dieser Container kein 't-Zeichen enthält, gibt diese Funktion NULL zurück. |
| RemoveDataItem<T>() |
Entfernen Sie die Instanz von 't "aus diesem Container. Es ist in der Regel nicht erforderlich, diese Methode aufzurufen, da ein Datencontainer automatisch geleert wird, wenn das Objekt geschlossen wird. |
| SetDataItem<T>(DkmDataCreationDisposition, T) |
Fügen Sie ein neues Element in den Datencontainer ein. |