Freigeben über


Navigieren in und Aktualisieren von Ebenenmodellen im Programmcode

Aktualisiert: April 2011

Dieses Visual Studio 2010 Feature Pack ermöglicht es Ihnen, mithilfe von Programmcode in Ebenenmodellen in Visual Studio 2010 Ultimate zu navigieren und Ebenenmodelle zu aktualisieren. In diesem Thema werden die Elemente und die Beziehungen in Ebenenmodellen beschrieben.

Weitere Informationen zu Ebenendiagrammen aus Sicht des Benutzers finden Sie unter Ebenendiagramme: Referenz und Ebenendiagramme: Richtlinien. Weitere Informationen finden Sie unter Visual Studio Feature Packs.

Transaktionen

Wenn Sie ein Modell aktualisieren, erwägen Sie, die Änderungen in einem ILinkedUndoTransaction einzuschließen. Dadurch werden Ihre Änderungen in einer Transaktion gruppiert. Wenn eine der Änderungen fehlschlägt, wird die gesamte Transaktion zurückgesetzt. Wenn der Benutzer eine Änderung rückgängig macht, werden geleichzeitig alle Änderungen rückgängig gemacht.

Weitere Informationen finden Sie unter Gewusst wie: Verknüpfen von Modellaktualisierungen mithilfe von Transaktionen.

using (ILinkedUndoTransaction t =
        LinkedUndoContext.BeginTransaction("a name"))
{ 
    // Make changes here ....
    t.Commit(); // Don't forget this!
}

Kapselung

ILayer und ILayerModel können beide ILayer enthalten.

Ebenen (ILayer) und das Ebenenmodell (ILayerModel) können Kommentare und Ebenen enthalten.

Eine Ebene (ILayer) kann in einem Ebenenmodell (ILayerModel) enthalten sein oder innerhalb eines anderen ILayer geschachtelt werden.

Verwenden Sie die Erstellungsmethoden für den entsprechenden Container, um einen Kommentar oder eine Ebene zu erstellen.

Ein Abhängigkeitslink wird von einem Objekt dargestellt. Es kann in jede Richtung navigiert werden:

Ein ILayerDependencyLink verbindet zwei ILayer.

Rufen Sie source.CreateDependencyLink(target) auf, um einen Abhängigkeitslink zu erstellen.

Kommentare

Kommentare können in Ebenen oder dem Ebenenmodell enthalten sein und auch mit jedem Ebenenelement verknüpft werden:

Kommentare können jedem Ebenenelement hinzugefügt werden.

Ein Kommentar kann mit einer beliebigen Anzahl von Elementen (einschließlich keinem) verknüpft werden.

Verwenden Sie folgenden Code zum Abrufen der Kommentare, die einem Ebenenelement angefügt sind:

ILayerModel model = diagram.GetLayerModel(); 
IEnumerable<ILayerComment> comments = 
   model.Comments.Where(comment => 
      comment.Links.Any(link => link.Target == layerElement));

Warnung

Mit der Comments-Eigenschaft eines ILayer werden Kommentare abgerufen, die im ILayer enthalten sind. Damit verknüpfte Kommentare werden nicht abgerufen.

Erstellen Sie einen Kommentar, indem Sie CreateComment() für den entsprechenden Container aufrufen.

Erstellen Sie einen Link, indem Sie CreateLink() für den Kommentar verwenden.

Ebenenelemente

Alle Elementtypen, die in einem Modell enthalten sein können, sind Ebenenelemente:

Ebenendiagramme enthalten ILayerElements.

Eigenschaften

Jedes ILayerElement besitzt ein Zeichenfolgenwörterbuch mit dem Namen Properties. Sie können mithilfe dieses Wörterbuchs jedem Ebenenelement beliebige Informationen anfügen.

Artefaktverweise

Ein Artefaktverweis (ILayerArtifactReference) stellt den Link zwischen einer Ebene und einem Projektelement (z. B. Datei, Klasse oder Ordner) dar. Wenn der Benutzer eine Ebene erstellt oder hinzufügt, indem er Elemente aus dem Projektmappen-Explorer oder Architektur-Explorer in das Ebenendiagramm zieht, dann erstellt er damit Artefakte. Mit einer Ebene kann eine beliebige Anzahl von Artefaktverweisen verknüpft werden.

Jede Zeile im Ebenen-Explorer zeigt einen Artefaktverweis an. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Ebenendiagrammen aus Artefakten.

Folgende Prinzipaltypen und Methoden haben mit Artefaktverweisen zu tun:

ILayerArtifactReference. Die Categories-Eigenschaft gibt an, auf welchen Artefakttyp verwiesen wird, z. B. auf eine Klasse, ausführbare Datei oder Assembly. Kategorien bestimmen, wie der Bezeichner das Zielartefakt identifiziert.

CreateArtifactReferenceAsync() erstellt einen Artefaktverweis aus einem Project oder ProjectItem. Dabei handelt es sich um einen asynchronen Vorgang. Folglich stellen Sie normalerweise einen Rückruf bereit, der nach Abschluss der Erstellung aufgerufen wird.

Ebenenartefaktverweise sind nicht mit Artefakten zu verwechseln, die in Diagrammen verwendet werden.

Formen und Diagramme

Zwei Objekte werden verwendet, um die einzelnen Elemente in einem Ebenenmodell darzustellen: ein ILayerElement und ein IShape. Das IShape stellt die Position und die Größe der Form im Diagramm dar. In Ebenenmodellen hat jedes ILayerElement ein IShape, und jedes IShape in einem Ebenendiagramm hat ein ILayerElement. IShape wird auch für UML-Modelle verwendet. Daher verfügt nicht jedes IShape über ein Ebenenelement.

Auf die gleiche Weise wird das ILayerModel für ein IDiagram angezeigt.

Im Code für einen benutzerdefinierten Befehls- oder Gestenhandler können Sie das aktuelle Diagramm und die aktuelle Auswahl der Formen aus dem DiagramContext-Import abrufen:

public class ... {
[Import]
    public IDiagramContext DiagramContext { get; set; }
...
public void ... (...) 
{ IDiagram diagram = this.DiagramContext.CurrentDiagram;
  ILayerModel model = diagram.GetLayerModel();
  if (model != null)
  { foreach (ILayer layer in model.Layers) { ... }}
  foreach (IShape selected in diagram.SelectedShapes)
  { ILayerElement element = selected.GetLayerElement();
    if (element != null) ... }}

Jedes ILayerElement wird durch eine IShape angegeben.

IShape und IDiagram werden auch verwendet, um UML-Modelle anzuzeigen. Weitere Informationen finden Sie unter Gewusst wie: Anzeigen eines Modells in Diagrammen.

Siehe auch

Referenz

Layer Diagrams: Guidelines

Konzepte

Ebenendiagramme: Referenz

Weitere Ressourcen

Hinzufügen von Befehlen und Bewegungen zu Ebenendiagrammen

Hinzufügen einer benutzerdefinierten Architekturüberprüfung zu Ebenendiagrammen

Hinzufügen von benutzerdefinierten Eigenschaften zu einem Ebenendiagramm

Erweitern von UML-Modellen und Diagrammen

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

April 2011

Informationen über das Zugreifen auf Kommentare und Eigenschaften wurden hinzugefügt.

Informationsergänzung.