Объявление класса ассоциации

Класс ассоциации — это особый тип класса, который определяет связь между двумя другими классами.

В следующей процедуре описывается создание класса ассоциации с помощью MOF-кода.

Создание класса ассоциации с помощью MOF-кода

  1. Назначьте классу квалификатор связи .

    Несмотря на то, что можно создать класс со ссылками на объекты или классы, использование квалификатора ассоциации не только дает понять, что класс является классом ассоциации, но и, как рекомендуется, гарантирует, что класс полностью функционирует как класс ассоциации.

  2. Создайте в классе две ссылки, описывающие два экземпляра объекта, которые необходимо связать, с помощью типа ref .

    Ссылки привязывают два объекта в ассоциации, содержащие пути к объектам . Хотя это и не обязательно, используйте ссылочные свойства в качестве ключевых свойств.

    Хотя можно создавать полные ссылки или ссылки, относящиеся к пространству имен, WMI имеет ограниченную поддержку ссылок между пространствами имен. В частности, только статически определенные объекты могут ссылаться друг на друга через границы пространства имен; Динамически поддерживаемые объекты не могут ссылаться друг на друга.

    При необходимости используйте квалификаторы HasClassRef и Classref вместе с типом ссылки на объект для ссылки на класс.

    WMI поддерживает наличие одной ссылочной точки ссылки на экземпляр, а другой — для класса. В этом случае класс ассоциации будет описывать связь, которая привязывает экземпляры к классам.

    В следующем примере кода описывается синтаксис использования HasClassRef и Classref с типом объекта .

    [HasClassRefs, Association]
    class SomeAssocClass
    {
         [key, classref{ "MyEndpoint", "OtherContainer" }]
         object ref ep1;
         [key] object ref ep2;
    }; 
    

    В предыдущем примере ссылка ep1 может указывать на определения классов для класса MyEndpoint или Класса OtherContainer . Обратите внимание, что, хотя необходимо слабо вводить ссылочный класс, нельзя вводить слабый тип самого квалификатора Classref . это значительно снизит эффективность обработчика запросов WMI. Слабая типизация создает ссылку, которая может содержать любой тип данных с помощью объекта ключевое слово и ссылочных типов данных. Чтобы успешно использовать HasClassRef, необходимо задать соответствующие варианты квалификатора для распространения на все экземпляры и подклассы.

  3. При необходимости создайте другие свойства.

    В следующем примере кода показано, что инструментарий WMI в настоящее время не поддерживает классы ассоциаций с более чем двумя ссылочными свойствами.

    [Association : ToInstance] 
    class MyAssocClass
    {
        ClassX ref PathToClassX ;
        ClassY ref PathToClassY ;
    };
    
  4. По завершении скомпилируйте КОД MOF с помощью компилятора MOF.

    Дополнительные сведения см. в разделе Компиляция MOF-файлов.

В примере кода на шаге 3 определяется класс ассоциации MyAssocClass . Класс MyAssocClass определяет связь между ClassX и ClassY. Свойства PathToClassX и PathToClassY содержат пути к объектам экземпляров классов, которые необходимо связать. Ключевое слово ToInstance — это один из нескольких флагов вкуса, определяемых инструментарием WMI для предоставления сведений об использовании квалификатора. Ключевое слово ToInstance указывает, что инструментарий WMI должен распространять квалификатор association на все экземпляры класса ассоциации. Проверив этот квалификатор экземпляра, клиентское программное обеспечение может определить, что экземпляр принадлежит классу ассоциации, не извлекая определение класса для поиска квалификатора ассоциации . Дополнительные сведения см. в разделе Описание квалификатора с вкусом квалификатора и ссылки.

Проектирование классов формата управляемых объектов (MOF)