Condividi tramite


Esplorazione e aggiornamento di modelli di livello nel codice del programma

Questo Feature Pack di Visual Studio 2010 consente di esplorare e aggiornare i modelli di livello di Visual Studio 2010 Ultimate tramite il codice programma. In questo argomento vengono descritti gli elementi e le relazioni dei modelli di livello.

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

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 Procedura: creare diagrammi livello da elementi.

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

Riferimenti

Layer Diagrams: Guidelines

Concetti

Diagrammi livello: riferimento

Estensione di modelli e diagrammi UML

Altre risorse

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

Cronologia delle modifiche

Data

Cronologia

Motivo

Aprile 2011

Aggiunte informazioni sull'accesso a commenti e proprietà.

Miglioramento delle informazioni.