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
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 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) ... }}
IShape e IDiagram sono utilizzati anche per visualizzare i modelli UML. Per ulteriori informazioni, vedere Procedura: visualizzare un modello nei diagrammi.
Vedere anche
Riferimenti
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. |