Compartir a través de


Declarar una clase de asociación

Una clase de asociación es un tipo especial de clase que define una relación entre otras dos clases.

En el procedimiento siguiente se describe cómo crear una clase de asociación mediante códigos MOF.

Para crear una clase de asociación mediante códigos MOF

  1. Asigne el calificador Association a la clase.

    Aunque es posible crear una clase con referencias a objetos o clases, el uso del calificador Association no solo deja claro que la clase es una clase de asociación, sino que, como procedimiento recomendado, garantiza que la clase funcione completamente como una clase de asociación.

  2. Cree dos referencias dentro de la clase que describen las dos instancias de objeto que desea asociar juntas mediante el tipo ref.

    Las referencias enlazan los dos objetos de la asociación mediante la contención de rutas de acceso a los objetos. Aunque no es necesario, use también las propiedades de referencia como propiedades clave.

    Aunque puede crear referencias completas o relativas al espacio de nombres, WMI solo tiene compatibilidad limitada con referencias entre espacios de nombres. En concreto, solo los objetos definidos estáticamente pueden hacer referencia entre sí a través de los límites del espacio de nombres; Los objetos admitidos dinámicamente no se pueden hacer referencia entre sí.

    Si es necesario, use los calificadores HasClassRef y Classref junto con el tipo object ref para hacer referencia a una clase.

    WMI admite tener un punto de referencia ref a una instancia y el otro punto de referencia de object a una clase. En este caso, la clase de asociación describiría una asociación que enlaza instancias a clases.

    En el ejemplo de código siguiente se describe la sintaxis para usar HasClassRef y Classref con un tipo object.

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

    En el ejemplo anterior, la referencia ep1 puede apuntar a las definiciones de clase para la clase MyEndpoint o OtherContainer. Tenga en cuenta que, aunque debe escribir débilmente la clase de referencia, no puede escribir débilmente el calificador Classref; si lo hace, reduciría gravemente la eficacia del motor de consultas WMI. La escritura débil está creando una referencia que puede contener cualquier tipo de datos mediante la palabra clave object y el tipo de datos ref. Para usar correctamente HasClassRef, debe establecer los tipos de calificador pertinentes para propagarse a todas las instancias y subclases.

  3. Cree cualquier otra propiedad cuando sea necesario.

    En el ejemplo de código siguiente se muestra que WMI no admite actualmente clases de asociación que tengan menos o más de dos propiedades de referencia.

    [Association : ToInstance] 
    class MyAssocClass
    {
        ClassX ref PathToClassX ;
        ClassY ref PathToClassY ;
    };
    
  4. Cuando haya finalizado, compile el código MOF con el compilador MOF.

    Para obtener más información, consulte Compilar archivos MOF.

El ejemplo de código del paso 3 define la clase de asociación MyAssocClass. La clase MyAssocClass define una relación entre ClassX y ClassY. Las propiedades PathToClassX y PathToClassY contienen rutas de acceso de objeto a las instancias de las clases que se van a asociar. La palabra clave ToInstance es una de las varias marcas de sabor que WMI define para proporcionar información sobre el uso de un calificador. La palabra clave ToInstance indica que WMI debe propagar el calificador Association a todas las instancias de la clase de asociación. Al comprobar este calificador de instancia, el software cliente puede determinar que una instancia pertenece a una clase de asociación, sin tener que recuperar la definición de clase para buscar el calificador Association. Para obtener más información, consulte Describir un calificador con un tipo de calificador y Referencias.

Diseño de clases de Managed Object Format (MOF)