声明关联类

关联类是一种特殊类型的类,它定义其他两个类之间的关系。

以下过程说明如何使用 MOF 代码创建关联类。

使用 MOF 代码创建关联类

  1. 将 Association 限定符分配到类。

    尽管可以创建引用对象或类的类,但使用 Association 限定符不仅可以清楚地表明该类是关联类,而且作为最佳做法,还可以确保该类完全用作关联类。

  2. 在描述你要关联在一起的两个对象实例的类中,使用 ref 类型创建两个引用。

    这些引用通过包含对象的路径来绑定关联中的两个对象。 还可以将引用属性用作键属性,不过并不要求这样做。

    尽管可以创建完全限定的或命名空间相关的引用,但 WMI 对跨命名空间引用的支持有限。 具体而言,只有静态定义的对象才能跨命名空间边界相互引用;动态支持的对象无法相互引用。

    如有必要,可以将 HasClassRef 和 Classref 限定符与 object ref 类型结合使用以引用类。

    WMI 支持将一个 ref 引用指向某个实例,将另一个 object 引用指向某个类。 在这种情况下,关联类描述用于将实例绑定到类的关联。

    以下代码示例说明了将 HasClassRef 和 Classref 与 object 类型结合使用的语法。

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

    在以上示例中,ep1 引用可以指向 MyEndpoint 类或 OtherContainer 类的类定义。 请注意,虽然必须将引用类弱类型化,但不能将 Classref 限定符本身弱类型化;这样会严重降低 WMI 查询引擎的效率。 弱类型化是使用 object 关键字和 ref 数据类型创建可包含任何数据类型的引用。 若要成功使用 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 限定符传播到关联类的所有实例。 通过检查此实例限定符,客户端软件可以确定实例属于关联类,而无需检索类定义来查找 Association 限定符。 有关详细信息,请参阅使用限定符风格描述限定符参考

设计托管对象格式 (MOF) 类