DkmDataContainer Classe
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
DkmDataContainer est un bloc de construction qui est utilisé dans cette API. Elle permet à la plupart des objets de cette API de contenir des « champs virtuels » qui sont ajoutés par n’importe quel composant du système. Ceci est similaire à une version de type sécurisé du concept « expando » dans JScript.
Règles pour DkmDataContainer :
- Tous les objets « reference » dans le système héritent de DkmDataContainer. Les objets de référence sont suivis par le composant répartiteur de ce système, et à différents points de marshaling (natif managé>, natif>, communication à distance) l’identité de référence d’objet est conservée. Les objets ' Value' n’héritent pas de DkmDataContainer, car le système ne suit pas ces objets. Par conséquent, lors d’une transition de marshaling, la valeur de l’objet est copiée.
- Les « champs virtuels » de ces objets qui héritent de DkmDataContainer sont appelés éléments de données.
- Les éléments de données sont PRIVÉS pour le composant qui les a ajoutés. Cette fonctionnalité ne peut pas être utilisée pour partager des champs au-delà des limites des composants.
- Les éléments de données sont des instances d’une classe d’élément de données. Dans le code managé, les classes d’éléments de données héritent de DkmDataItem pour les identifier en tant qu’élément de données. Dans le code natif, les éléments de données héritent d’IUnknown.
- En règle générale, un composant n’a jamais besoin de supprimer un élément de données. En effet, les éléments de données sont automatiquement supprimés lorsque l’objet conteneur est fermé.
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
- Héritage
-
DkmDataContainer
- Héritage
-
DkmDataContainer
- Dérivé
Exemple de classe d’élément de données. Dans le code managé, les éléments de données doivent hériter de la classe 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();
}
}
Create une nouvelle instance de l’exemple de classe d’élément de données AliasLog log = new AliasLog(« c :\foo.log ») ;
les éléments de données peuvent être passés à une méthode create... DkmClrAlias alias = DkmClrAlias. Create(« ExampleName », log) ;
... ou peut être ajouté à l’aide de l’alias SetDataItem. SetDataItem<AliasLog>(DkmDataCreationDisposition.CreateAlways, log) ;
Ensuite, la valeur peut être récupérée à l’aide de GetDataItem AliasLog find = alias. GetDataItem<AliasLog>() ;
Is |
Retourne true si un événement « déchargé » a été déclenché pour cet objet (exemple : DkmThread ::Unload est appelé) ou si l’objet a été fermé. Notez que vous devez faire attention lors de la vérification de cette status car, sans synchronisation, le status retourné risque de ne plus être exact après la lecture de l’instruction. |
Get |
Obtient le instance de « T » qui a été ajouté à ce instance de conteneur. Si ce conteneur ne contient pas de « T », cette fonction retourne la valeur Null. |
Remove |
Supprimez le instance de 'T' de ce conteneur. Il n’est généralement pas nécessaire d’appeler cette méthode, car un conteneur de données est automatiquement vidé lorsque l’objet est fermé. |
Set |
Placez un nouvel élément dans le conteneur de données. |
Produit | Versions |
---|---|
Visual Studio SDK | 2015, 2017, 2019, 2022 |