Declarar uma classe de associação

Uma classe de associação é um tipo especial de classe que define uma relação entre duas outras classes.

O procedimento a seguir descreve como criar uma classe de associação usando o código MOF.

Para criar uma classe de associação usando o código MOF

  1. Atribua o qualificador Association à sua classe.

    Embora seja possível criar uma classe com referências a objetos ou classes, o uso do qualificador Association não apenas deixa claro que sua classe é de associação, mas também, como melhor prática, garante que ela funcione totalmente como uma classe de associação.

  2. Crie duas referências dentro da classe que descrevem as duas instâncias de objeto que você deseja associar usando o tipo ref .

    As referências vinculam os dois objetos na associação ao conter caminhos para os objetos. Embora não seja necessário, use as propriedades de referência como propriedades de chave também.

    Apesar de ser possível criar referências totalmente qualificadas ou relativas ao namespace, o WMI tem suporte limitado apenas para referências entre namespaces. Especificamente, somente objetos definidos estaticamente podem referenciar uns aos outros entre limites de namespace. Objetos com suporte dinâmico não podem referenciar uns aos outros.

    Se necessário, use os qualificadores HasClassRef e Classref em conjunto com o tipo object ref para referenciar uma classe.

    O WMI dá suporte a ter uma referência ref apontando para uma instância e o outra referência object apontando para uma classe. Nesse caso, sua classe de associação descreveria uma associação que vincula instâncias a classes.

    O exemplo de código a seguir descreve a sintaxe para usar HasClassRef e Classref com um tipo object.

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

    No exemplo anterior, a referência ep1 pode apontar para as definições de classe para a classe MyEndpoint ou para a OtherContainer. Observe que, embora você possa definir uma tipagem fraca para a classe de referência, você não pode fazer o mesmo com o qualificador Classref em si; fazê-lo reduziria significativamente a eficiência do mecanismo de consulta do WMI. A definição de tipagem fraca está criando uma referência que pode conter qualquer tipo de dados usando a palavra-chave object e o tipo de dados ref. Para usar HasClassRef com êxito, você deve definir os tipos de qualificadores relevantes para propagar para todas as instâncias e subclasses.

  3. Crie outras propriedades conforme necessário.

    O exemplo de código a seguir mostra que o WMI atualmente não dá suporte a classes de associação com menos ou mais de duas propriedades de referência.

    [Association : ToInstance] 
    class MyAssocClass
    {
        ClassX ref PathToClassX ;
        ClassY ref PathToClassY ;
    };
    
  4. Quando terminar, compile o código MOF com o compilador MOF.

    Para obter mais informações, consulte Compilar arquivos MOF.

O exemplo de código na Etapa 3 define a classe de associação MyAssocClass. A classe MyAssocClass define uma relação entre ClassX e ClassY. As propriedades PathToClassX e PathToClassY contêm caminhos de objeto para as instâncias das classes a serem associadas. O palavra-chave ToInstance é um dos vários sinalizadores de variante que o WMI define para fornecer informações sobre o uso de um qualificador. O palavra-chave ToInstance indica que o WMI deve propagar o qualificador Association para todas as instâncias da classe de associação. Ao verificar esse qualificador de instância, o software cliente pode determinar que uma instância pertença a uma classe de associação sem precisar recuperar a definição de classe para procurar o qualificador Association. Para obter mais informações, consulte Descrever um qualificador com uma variante de qualificador e Referências.

Projetar classes do MOF (Managed Object Format)