Deklarieren einer Assoziationsklasse

Eine Assoziationsklasse ist eine besondere Art von Klasse, die eine Beziehung zwischen zwei verschiedenen Klassen definiert.

Im Folgenden wird beschrieben, wie Sie eine Assoziationsklasse mithilfe von MOF-Code erstellen.

So erstellen Sie eine Assoziationsklasse mithilfe von MOF-Code

  1. Weisen Sie Ihrer Klasse den Qualifizierer Association zu.

    Obwohl es möglich ist, eine Klasse mit Verweisen auf Objekte oder Klassen zu erstellen, macht die Verwendung des Qualifizierers Association nicht nur deutlich, dass es sich bei Ihrer Klasse um eine Assoziationsklasse handelt, sondern stellt auch sicher, dass Ihre Klasse vollständig als Assoziationsklasse funktioniert.

  2. Erstellen Sie zwei Verweise innerhalb der Klasse, um die zwei zu verknüpfenden Objektinstanzen zu beschreiben, indem Sie den Typ ref verwenden.

    Die Verweise verbinden die beiden Objekte in der Assoziation, indem sie Pfade zu den Objekten enthalten. Obwohl dies nicht erforderlich ist, sollten Sie die Verweiseigenschaften auch als Schlüsseleigenschaften verwenden.

    Wenngleich Sie vollqualifizierte oder auf den Namespace bezogene Verweise erstellen können, bietet WMI nur eine begrenzte Unterstützung für namespaceübergreifende Verweise. Insbesondere können nur statisch definierte Objekte über Namespacegrenzen hinweg aufeinander verweisen; dynamisch unterstützte Objekte können sich nicht gegenseitig referenzieren.

    Verwenden Sie bei Bedarf die Qualifizierer HasClassRef und Classref in Verbindung mit dem Typ object ref, um eine Klasse zu referenzieren.

    WMI unterstützt die Verwendung eines ref-Referenzpunkts für eine Instanz und eines object-Referenzpunkts für eine Klasse. In diesem Fall würde Ihre Assoziationsklasse eine Assoziation beschreiben, die Instanzen an Klassen bindet.

    Das folgende Codebeispiel beschreibt die Syntax zur Verwendung von HasClassRef und Classref mit einem object-Typ.

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

    Im vorherigen Beispiel kann der Verweis ep1 entweder auf die Klassendefinitionen der Klasse MyEndpoint oder der Klasse OtherContainer verweisen. Beachten Sie, dass die Verweisklasse zwar schwach typisiert werden muss, der Classref-Qualifizierer selbst jedoch nicht schwach typisiert werden kann – dies würde die Effizienz der WMI-Abfrage-Engine stark beeinträchtigen. Bei der schwachen Typisierung wird mit dem Schlüsselwort object und dem Datentyp ref ein Verweis erstellt, der einen beliebigen Datentyp enthalten kann. Für eine erfolgreiche Verwendung von HasClassRef müssen Sie die relevanten Qualifizierertypen so festlegen, dass sie an alle Instanzen und Unterklassen weitergegeben werden.

  3. Erstellen Sie nach Bedarf weitere Eigenschaften.

    Das folgende Codebeispiel zeigt, dass WMI derzeit keine Assoziationsklassen mit weniger oder mehr als zwei Verweiseigenschaften unterstützt.

    [Association : ToInstance] 
    class MyAssocClass
    {
        ClassX ref PathToClassX ;
        ClassY ref PathToClassY ;
    };
    
  4. Wenn Sie fertig sind, kompilieren Sie Ihren MOF-Code mit dem MOF-Compiler.

    Weitere Informationen finden Sie unter Kompilieren von MOF-Dateien.

Das Codebeispiel in Schritt 3 definiert die Assoziationsklasse MyAssocClass. Die MyAssocClass-Klasse definiert eine Beziehung zwischen ClassX und ClassY. Die Eigenschaften PathToClassX und PathToClassY enthalten Objektpfade zu den Instanzen der zu assoziierenden Klassen. Das Schlüsselwort ToInstance ist eines von mehreren Variantenflags, die WMI definiert, um Informationen zur Verwendung eines Qualifizierers bereitzustellen. Das Schlüsselwort ToInstance gibt an, dass WMI den Qualifizierer Association an alle Instanzen der Assoziationsklasse weitergeben soll. Mithilfe der Überprüfung dieses Qualifizierers kann die Clientsoftware bestimmen, ob eine Instanz einer Assoziationsklasse angehört, ohne durch einen Abruf der Klassendefinition nach dem Qualifizierer Association suchen zu müssen. Weitere Informationen finden Sie unter Beschreiben eines Qualifizierers mit einem Qualifizierertyp und unter Verweise.

Entwerfen von MOF-Klassen (Managed Object Format)