Nawigowanie i aktualizowanie modeli warstw w kodzie programu
W tym temacie opisano elementy i relacje w warstwie modeli, które może przejść i aktualizacji w Visual Studio Ultimate przy użyciu kodu programu.
Aby uzyskać więcej informacji na temat diagramów warstwowych z jego punktu widzenia, zobacz Diagramy warstw: Odwołanie i Diagramy warstw: Zalecenia.
Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer Modelu opisane w tym temacie jest elewacji w bardziej ogólnym Microsoft.VisualStudio.GraphModel modelu.Podczas pisania menu polecenia lub gest rozszerzenia, użyj Layer modelu.Podczas pisania warstwy rozszerzenia weryfikacji, jest łatwiejsza w użyciu GraphModel.
Transakcje
Podczas aktualizowania modelu, należy wziąć pod uwagę załączając zmian w ILinkedUndoTransaction.To grup zmian w jednej transakcji.Jeśli zmiany nie powiedzie się, cała transakcja zostanie wycofana.Jeśli użytkownik cofa zmianę, wszystkie zmiany zostaną cofnięte ze sobą.
Aby uzyskać więcej informacji, zobacz Porady: łączenie aktualizacji modeli za pomocą transakcji.
using (ILinkedUndoTransaction t =
LinkedUndoContext.BeginTransaction("a name"))
{
// Make changes here ....
t.Commit(); // Don't forget this!
}
Zawierania
Warstwy (ILayer) i model warstwy (ILayerModel) mogą zawierać komentarze i warstwy.
Warstwy (ILayer) może znajdować się w modelu warstwy (ILayerModel) lub mogą być zagnieżdżone w innym ILayer.
Aby utworzyć komentarz lub warstwy, użycie tych metod tworzenia odpowiedniego kontenera.
Łączy zależności
Łącze zależności jest reprezentowany przez obiekt.Można go przejście w dowolnym kierunku:
Aby utworzyć łącze zależności, należy wywołać source.CreateDependencyLink(target).
Komentarze
Komentarze mogą znajdować się wewnątrz warstwy lub warstwy modelu, a także mogą być połączone z dowolnego elementu warstwy:
Komentarz mogą być połączone z dowolną liczbę elementów, w tym none.
Aby uzyskać komentarze, które są dołączone do elementu warstwy, należy użyć:
ILayerModel model = diagram.GetLayerModel();
IEnumerable<ILayerComment> comments =
model.Comments.Where(comment =>
comment.Links.Any(link => link.Target == layerElement));
![]() |
---|
Comments Właściwość ILayer pobiera komentarze, które wchodzą w skład ILayer.Serwer nie uzyska komentarze, które są połączone. |
Utwórz komentarz wywołując CreateComment() na odpowiedni kontener.
Utwórz łącze przy użyciu CreateLink() na komentarz.
Elementy warstwy
Wszystkie typy elementu, który może być zawarty w modelu są elementami warstwy:
Właściwości
Każdy ILayerElement ma słownik ciągu o nazwie Properties.Aby dołączyć dowolne informacje do dowolnego elementu warstwy, można użyć tego słownika.
Odwołuje się do artefaktów
Odwołanie artefaktu (ILayerArtifactReference) reprezentuje łącze między warstwami elementu projektu, takich jak pliku, klasa lub folderu.Gdy użytkownik tworzy lub dodaje do warstwy przeciągając elementy na warstwowego diagramu z Eksploratora rozwiązań lub Eksplorator architektury, tworzysz artefaktów.Mogą być połączone dowolną liczbę artefaktu odwołuje się do warstwy.
Każdy wiersz w Eksploratorze warstwy Wyświetla odwołania artefaktu.Aby uzyskać więcej informacji, zobacz Tworzenie diagramów warstwy na podstawie kodu.
Typy podmiotu zabezpieczeń i zajmujące się artefaktów odwołuje się do metody są następujące:
ILayerArtifactReference.Właściwość kategorii wskazuje, jakiego rodzaju artefaktu odwołuje się do, takich jak klasy, plik wykonywalny lub zestawu.Kategorie określa, jak identyfikator identyfikuje artefaktu docelowego.
CreateArtifactReferenceAsync tworzy odwołanie artefaktu z Project lub ProjectItem.To jest operacja asynchroniczna.W związku z tym zazwyczaj zawierają wywołanie zwrotne, które jest wywoływane w przypadku tworzenia zostanie zakończona.
Jednak można odróżnić odwołuje się do warstwy artefaktu z artefaktów w diagramy przypadków.
Kształty i Diagramy
Dwa obiekty są używane do reprezentowania poszczególnych elementów w modelu warstwy: ILayerElement, i IShape.IShape Reprezentuje pozycję i rozmiar kształtu na diagramie.W modelach warstwy każdy ILayerElement ma jeden IShape, i w każdym IShape na warstwie diagramu ma jeden ILayerElement.IShape Służy do modeli UML.W związku z tym co nie IShape zawiera element z warstwy.
W ten sam sposób ILayerModel jest wyświetlany na jednym IDiagram.
W kodzie niestandardowe polecenia lub obsługi gest, aby uzyskać bieżącego diagramu i bieżący wybór kształtów z DiagramContext importowania:
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 i IDiagram również są używane do wyświetlania modeli UML.Aby uzyskać więcej informacji, zobacz Porady: wyświetlanie modelu na diagramach.
Zobacz też
Koncepcje
Dodawanie poleceń i gestów do diagramów warstw
Dodawanie walidacji niestandardowej architektury do diagramów warstw