Referências (WMI)
A palavra-chave ref no MOF descreve um caminho de objeto e é mapeada para um tipo de automação VT_BSTR. O caminho de objeto pode ser um caminho completo para um servidor e namespace ou um caminho relativo para outro objeto no mesmo namespace. Você pode usar a palavra-chave ref para vincular duas ou mais classes. O WMI dá suporte a dois tipos de caminhos de objeto, que são usados para definir caminhos gerais ou específicos no WMI.
A finalidade principal da palavra-chave ref é reduzir o tempo de transporte e a codificação entre objetos que existem inteiramente no repositório WMI. Você também pode usar a palavra-chave ref para criar uma associação entre duas classes. Para obter mais informações, consulte Declarar uma classe de associação. Se o item referenciado estiver localizado no mesmo arquivo MOF, use um alias para inicializar o valor ref. Para obter mais informações, consulte Criar um alias.
Observação
Quando uma palavra-chave ref é aplicada a uma propriedade de chave, é possível distinguir as referências a objetos pelo valor da cadeia de caracteres do objeto em vez do valor desreferenciado.
O MOF dá suporte ao conceito de caminho de objeto de tipagem forte e de tipagem fraca. Um caminho de objeto de tipagem fraca aponta para um objeto de uma classe não especificada e usa a palavra-chave ref com a palavra-chave OBJECT. Um objeto fortemente tipado aponta para um objeto de uma classe específica e usa ref com o nome da classe. O exemplo a seguir descreve uma referência RefToAnyClass de tipagem fraca que pode apontar para qualquer classe ou instância de classe e uma referência RefToClassX que pode apontar apenas para uma classe ou instância ClassX:
class MyClass
{
object ref RefToAnyClass; // Weakly typed
ClassX ref RefToClassX; // Strongly typed
};
O exemplo a seguir descreve duas instâncias e um objeto de associação que faz referência às instâncias anteriores:
#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";
};