Riferimenti (WMI)

La parola chiave di riferimento MOF descrive un percorso oggetto ed esegue il mapping a un tipo di automazione VT_BSTR. Il percorso dell'oggetto può essere un percorso completo di un server e di uno spazio dei nomi oppure un percorso relativo a un altro oggetto nello stesso spazio dei nomi. È possibile usare una parola chiave ref per collegare due o più classi tra loro. WMI supporta due tipi di percorsi oggetto, che usano per definire percorsi generali o specifici all'interno di WMI.

Lo scopo principale della parola chiave di riferimento è ridurre il tempo di trasporto e la codifica tra gli oggetti che esistono interamente all'interno del repository WMI. È anche possibile usare la parola chiave ref per creare un'associazione tra due classi. Per altre informazioni, vedere Dichiarazione di una classe di associazione. Se l'elemento a cui si fa riferimento si trova nello stesso file MOF, usare un alias per inizializzare il valore ref . Per altre informazioni, vedere Creazione di un alias.

Nota

Quando una parola chiave ref viene applicata a una proprietà chiave, è possibile distinguere i riferimenti all'oggetto in base al valore stringa dell'oggetto anziché al valore dereferenziato.

 

MOF supporta il concetto di percorso di oggetto fortemente tipizzato e tipizzato in modo debole. Un percorso oggetto tipizzato in modo debole punta a un oggetto di una classe non specificata e usa la parola chiave ref con la parola chiave OBJECT . Un oggetto fortemente tipizzato punta a un oggetto di una classe specifica e usa ref con il nome della classe. Nell'esempio seguente viene descritto un riferimento RefToAnyClass tipizzato debole che può puntare a qualsiasi classe o istanza di classe e un riferimento RefToClassX che può puntare solo a una classe o a un'istanza ClassX :

class MyClass
{
    object ref RefToAnyClass;       // Weakly typed
    ClassX ref RefToClassX;         // Strongly typed
};

Nell'esempio seguente vengono descritte due istanze e un oggetto associazione che fa riferimento alle istanze precedenti:

#pragma namespace("\\\\.\\root")

instance of __Namespace
{
    Name = "WMI" ;
} ;

#pragma namespace("\\\\.\\root\\WMI")

Class A{
    [key] string aKey;
};

Class C{
    [key] string cKey;
};

// The following class creates an association 
// between the "A" class and the "C" class
    [Association] Class B{
    [key] A ref aRef;
    [Key, Min(1)] C ref cRef;
};

instance of a
{
    aKey = "This is the key for the A class";
};

instance of c
{
    cKey = "This is the key for the c class";
};