Condividi tramite


Esplorazione e aggiornamento di modelli di livello nel codice del programma

In questo argomento vengono descritti gli elementi e le relazioni nei modelli di livello, che è possibile esplorare e aggiornare in Visual Studio Ultimate tramite il codice programma.

Per ulteriori informazioni sui diagrammi livello dal punto di vista dell'utente, vedere Diagrammi livello: riferimento e Diagrammi livello: linee guida.

Il modello di Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer descritto in questo argomento è un aspetto più di un modello di Microsoft.VisualStudio.GraphModel generale.Se si scrive estensione di spostamento o il comando di menu, utilizzare il modello di Layer.Se si scrive estensione di convalida dei livelli, è più facile utilizzare GraphModel.

Transazioni

Quando si aggiorna un modello, è possibile includere le modifiche in un elemento ILinkedUndoTransaction.Questa interfaccia consente di raggruppare le modifiche in una transazione.Se non è possibile apportare correttamente una modifica, viene eseguito il rollback dell'intera transazione.Se l'utente annulla una modifica, verranno annullate tutte le modifiche.

Per ulteriori informazioni, vedere Procedura: collegare aggiornamenti di modelli tramite transazioni.

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

Contenimento

ILayer e ILayerModel possono contenere entrambi oggetti ILayers.

I livelli (ILayer) e il modello di livello (ILayerModel) possono contenere commenti e livelli.

Un livello (ILayer) può essere contenuto in un modello di livello (ILayerModel) o annidato all'interno di un altro elemento ILayer.

Per creare un commento o un livello, utilizzare i metodi di creazione sul contenitore appropriato.

Collegamento di dipendenza

Un collegamento di dipendenza è rappresentato da un oggetto.Può essere esplorato in qualsiasi direzione:

Oggetto ILayerDependencyLink che connette due ILayers.

Per creare un collegamento di dipendenza, chiamare source.CreateDependencyLink(target).

Commenti

I commenti possono essere contenuti in livelli o nel modello di livello ed essere collegati anche a qualsiasi elemento del livello:

È possibile associare commenti a qualsiasi elemento del livello.

Un commento può essere collegato a un numero qualsiasi di elementi o a nessun elemento.

Per ottenere i commenti associati a un elemento del livello, utilizzare:

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

La proprietà Comments di un elemento ILayer ottiene i commenti contenuti nell'elemento ILayer,mentre non ottiene i commenti collegati a esso.

Creare un commento richiamando CreateComment() sul contenitore appropriato.

Creare un collegamento tramite CreateLink() nel commento.

Elementi del livello

Tutti i tipi di elemento che possono essere contenuti in un modello sono elementi del livello:

I contenuti del diagramma dei livelli sono oggetti ILayerElements.

Proprietà

Ogni ILayerElement dispone di un dizionario di stringhe denominato Properties.È possibile utilizzare questo dizionario per associare informazioni arbitrarie a qualsiasi elemento del livello.

Riferimenti a elementi

Un riferimento a un elemento (ILayerArtifactReference) rappresenta il collegamento tra un livello e un elemento di progetto quale un file, una classe o cartella.Quando l'utente crea o aggiunge elementi a un livello trascinandoli nel diagramma livello da Esplora soluzioni o Esplora architettura, crea elementi.È possibile collegare a un livello il numero desiderato di riferimenti a elementi.

In ciascuna riga di Esplora livello è visualizzato un riferimento a un elemento.Per ulteriori informazioni, vedere Creare diagrammi livello dal codice.

I tipi e i metodi principali interessati dai riferimenti a elementi sono i seguenti:

ILayerArtifactReference.La proprietà Categorie indica a che tipo di elemento è fatto riferimento, ad esempio una classe, un file eseguibile o un assembly.Tale proprietà determina le modalità di identificazione dell'elemento di destinazione da parte dell'identificatore.

CreateArtifactReferenceAsync crea un riferimento a un elemento da un Project or ProjectItem.Si tratta di un'operazione asincrona.Pertanto, in genere si fornisce un callback che viene chiamato al termine della creazione.

I riferimenti a elementi del livello non devono essere confusi con gli elementi nei diagrammi casi di utilizzo.

Forme e diagrammi

I due oggetti vengono utilizzati per rappresentare ciascun elemento di un modello di livello: un ILayerElement, e un IShape.L'oggetto IShape rappresenta la posizione e le dimensioni della forma del diagramma.Nei modelli di livello, ogni ILayerElement dispone di un IShape e ogni IShape in un diagramma livello dispone di un ILayerElement.IShape viene utilizzato anche per i modelli UML.Pertanto, non ogni IShape dispone di un elemento del livello.

Analogamente, ILayerModel viene visualizzato in un elemento IDiagram.

Nel codice di un gestore comandi o movimenti personalizzato, è possibile ottenere il diagramma corrente e la selezione corrente di forme dall'importazione DiagramContext:

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) ... }}

Ogni oggetto ILayerElement è presentato da un oggetto IShape.

IShape e IDiagram sono utilizzati anche per visualizzare i modelli UML.Per ulteriori informazioni, vedere Procedura: visualizzare un modello nei diagrammi.

Vedere anche

Concetti

Aggiunta di comandi e movimenti a diagrammi livelli

Aggiunta di strumenti di convalida architettura personalizzati a diagrammi livelli

Aggiunta di proprietà personalizzate a un diagramma livelli

Diagrammi livello: riferimento

Diagrammi livello: linee guida

Estensione di modelli e diagrammi UML