Freigeben über


AddRule-Klasse

Stellt eine Regel dar, die aufgerufen wird, wenn ein Objekt dem Modell hinzugefügt wird.

Vererbungshierarchie

System.Object
  Microsoft.VisualStudio.Modeling.Rule
    Microsoft.VisualStudio.Modeling.AddRule
      Microsoft.VisualStudio.Modeling.Diagrams.CommentShapeAddRule
      Microsoft.VisualStudio.Modeling.Diagrams.NodeShape.ExpandCollapseNodeShapeWhenAddedToDiagramRule
      Microsoft.VisualStudio.Modeling.Diagrams.ParentShapeContainsNestedChildShapesAddRule
      Microsoft.VisualStudio.Modeling.Diagrams.ParentShapeHasRelativeChildShapesAddRule
      Microsoft.VisualStudio.Modeling.Diagrams.ShapeElementAddRule
      Microsoft.VisualStudio.Modeling.ElementDeserializedRule

Namespace:  Microsoft.VisualStudio.Modeling
Assembly:  Microsoft.VisualStudio.Modeling.Sdk.12.0 (in Microsoft.VisualStudio.Modeling.Sdk.12.0.dll)

Syntax

'Declaration
Public MustInherit Class AddRule _
    Inherits Rule
public abstract class AddRule : Rule

Der AddRule-Typ macht die folgenden Member verfügbar.

Konstruktoren

  Name Beschreibung
Geschützte Methode AddRule Initialisiert eine Instanz der AddRule-Klasse.

Zum Seitenanfang

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft FireBefore true , wenn diese Regel ausgeführt wird, bevor die Änderung stattfindet. (Von Rule geerbt.)
Öffentliche Eigenschaft FireImmediately true , wenn diese Regel sofort ausgeführt wird, wenn die Änderung auftritt. (Von Rule geerbt.)
Öffentliche Eigenschaft FireOnLocalCommit true , wenn diese Regel ausgeführt wird, wenn die aktuelle Transaktion ausgeführt wird. (Von Rule geerbt.)
Öffentliche Eigenschaft FireOnTopLevelCommit true , wenn diese Regel ausgeführt wird, wenn die Transaktion der obersten Ebene ausgeführt wird. (Von Rule geerbt.)
Öffentliche Eigenschaft FireTime Ruft ab oder legt fest, wann die Regel ausgeführt werden soll.Normalerweise festgelegt durch das RuleOn-Attribut. (Von Rule geerbt.)
Öffentliche Eigenschaft IsEnabled Übernimmt oder bestimmt, ob die Regel aktiviert ist.Normalerweise standardmäßig "true", Sie können es jedoch als "false" im RuleOn-Attribut initialisieren. (Von Rule geerbt.)
Öffentliche Eigenschaft Priority Ruft die Priorität ab, die der Regel zugewiesen wird.Hilft die Reihenfolge zu bestimmen, in der Regeln am Ende einer Transaktion ausgeführt werden. (Von Rule geerbt.)

Zum Seitenanfang

Methoden

  Name Beschreibung
Öffentliche Methode CompareTo(Object) Vergleicht die Regel mit einem anderen Objekt. (Von Rule geerbt.)
Öffentliche Methode CompareTo(Rule) Vergleicht die Regel mit einer anderen Regel durch ihre IDs. (Von Rule geerbt.)
Öffentliche Methode ElementAdded Alarmiert Listener, dass eine Regel verwendet wurde.
Öffentliche Methode Equals(Object) Überprüft, ob die Regel gleich dem Wert eines anderen Objekts ist. (Von Rule geerbt.)
Öffentliche Methode Equals(Rule) Überprüft, ob eine Regel einer anderen Regel gleich ist. (Von Rule geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche Methode GetHashCode Ruft den Hashcode für die Regel ab. (Von Rule geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)

Zum Seitenanfang

Hinweise

Regeln dieses Typs werden ausgelöst, wenn ein Element, eine Beziehung, eine Form, ein Konnektor oder ein Diagramm mit dem Modell hinzugefügt wird.

Ein RuleOnAttribute-Attribut, das auf die Klasse platziert wird, gibt an, welchen Objekttyp die Regel gearbeitet und wenn die Regel ausgelöst werden soll.

Die Regel wird aufgerufen, wenn das Objekt des angegebenen Typs zum Modell hinzugefügt wird, ob es zur Benutzeroberfläche oder programmgesteuert hinzugefügt wird.

Die Regel wird auch ausgelöst, wenn ein Element aus einer Datei geladen wird. Wenn Sie vermeiden möchten, zu reagieren, wenn dies geschieht, schließen Sie den Code im ElementAdded ein:

// Ignore this call if we're currently loading a model:
    if (e.ModelElement.Store.TransactionManager
          .CurrentTransaction.IsSerializing) 
       return;

Weitere Informationen und Beispiele finden Sie unter Regeln propagieren Änderungen im Modell.

Beispiele

Im folgenden Beispiel wird eine Regel, die von AddRule abgeleitet. Dies Regelsätze die Position einer Form, wenn sie dem Diagramm hinzugefügt wird.

Das RuleOn-Attribut gibt an, dass die Regel ausgelöst sollte wenn die Transaktionscommits der obersten Ebene.

[RuleOn(typeof(ParentShapeContainsNestedChildShapes), FireTime = TimeToFire.TopLevelCommit)]
public class ShapeAddedToDiagramRule : AddRule
{
  private double offset = 0.25;
  private PointD location = new PointD(0.25, 0.25);

  public override void ElementAdded(ElementAddedEventArgs e)
  {
    Shape shape = null;
    ParentShapeContainsNestedChildShapes nestedLink = e.ModelElement as ParentShapeContainsNestedChildShapes;
    if (nestedLink != null)
    {
      shape = nestedLink.NestedChildShapes as Shape;
    }

    if (shape != null && shape.Diagram != null)
    {
      // Expand the shape and move it to its new position
      shape.IsExpanded = true;
      shape.Location = new PointD(location.X, location.Y + offset);

      // Adjust the height offset for the size of the shape
      // (I'm assuming that the DefaultContainerMargin
      // provides for a decent spacing between the shapes)
      offset += shape.Size.Height + shape.Diagram.DefaultContainerMargin.Height;
    }
  }
}

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Referenz

Microsoft.VisualStudio.Modeling-Namespace

Weitere Ressourcen

Regeln propagieren Änderungen im Modell