声明关联类
关联类是一种特殊类型的类,它定义其他两个类之间的关系。
以下过程说明如何使用 MOF 代码创建关联类。
使用 MOF 代码创建关联类
将 Association 限定符分配到类。
尽管可以创建引用对象或类的类,但使用 Association 限定符不仅可以清楚地表明该类是关联类,而且作为最佳做法,还可以确保该类完全用作关联类。
在描述你要关联在一起的两个对象实例的类中,使用 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,必须设置要传播到所有实例和子类的相关限定符风格。
根据需要创建任何其他属性。
以下代码示例演示了 WMI 目前不支持引用属性数量少于或多于两个的关联类。
[Association : ToInstance] class MyAssocClass { ClassX ref PathToClassX ; ClassY ref PathToClassY ; };
完成后,请使用 MOF 编译器编译 MOF 代码。
有关详细信息,请参阅编译 MOF 文件。
步骤 3 中的代码示例定义 MyAssocClass 关联类。 MyAssocClass 类定义 ClassX 和 ClassY 之间的关系。 PathToClassX 和 PathToClassY 属性包含要关联的类实例的对象路径。 关键字 ToInstance 是 WMI 定义的多个风格标志之一,用于提供有关限定符用法的信息。 ToInstance 关键字指示 WMI 应将 Association 限定符传播到关联类的所有实例。 通过检查此实例限定符,客户端软件可以确定实例属于关联类,而无需检索类定义来查找 Association 限定符。 有关详细信息,请参阅使用限定符风格描述限定符和参考。
相关主题