Поделиться через


Ссылки (WMI)

MoF ref ключевое слово описывает путь к объекту и сопоставляется с типом автоматизации VT_BSTR. Путь к объекту может быть полным путем к серверу и пространству имен или относительным путем к другому объекту в том же пространстве имен. Вы можете использовать ссылку ключевое слово для связывания двух или нескольких классов. WMI поддерживает два типа путей объектов, которые используются для определения общих или конкретных путей в WMI.

Основной целью ссылки ключевое слово является сокращение времени транспорта и кодирования между объектами, которые существуют полностью в репозитории WMI. Можно также использовать ref ключевое слово для создания связи между двумя классами. Дополнительные сведения см. в объявлении класса ассоциации. Если указанный элемент находится в том же MOF-файле, используйте псевдоним для инициализации значения ссылки. Дополнительные сведения см. в разделе Создание псевдонима.

Заметка

Если ref ключевое слово применяется к свойству ключа, можно различать ссылки на объекты по значению строки объекта, а не по значению разыменования.

 

MOF поддерживает концепцию слабо типизированного и строго типизированного пути объекта. Слабо типизированный путь объекта указывает на объект неопределенного класса и использует ключевое слово ref с ключевым словом OBJECT. Строго типизированный объект указывает на объект определенного класса и использует ref с именем класса. В следующем примере описывается слабо типизированный ссылка на RefToAnyClass, которая может указывать на любой экземпляр класса или класса, а также ссылку RefToClassX, которая может указывать только на класс или экземпляр класса Class X:

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

В следующем примере описываются два экземпляра и объект связи, ссылающийся на предыдущие экземпляры:

#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";
};