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
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:
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:
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));
Attenzione |
---|
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:
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) ... }}
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