Ссылки (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";
};