Jak: otworzyć modelu UML, używając interfejsu API programu Visual Studio
Można również otworzyć modele i schematy w Visual Studio interfejsu użytkownika za pomocą interfejsu API.
Jeśli chcesz przeczytać modelu w kod programu bez wprowadzania widocznych dla użytkownika, można użyć następujących metod:
Visual StudioModel Bus umożliwia dostęp do modeli i ich elementy i zapewnia standardową metodę tworzenia łącza między modelem jednego i drugiego.Aby uzyskać więcej informacji, zobacz Jak: integrowanie modeli UML z innych modeli i narzędzia.
Model można otworzyć w trybie tylko do odczytu.Aby uzyskać więcej informacji, zobacz Jak: odczytać modelu UML w kod programu.
Otwieranie modeli i diagramów w programie Visual Studio
Aby otworzyć model w interfejsie użytkownika, należy zastosować standard Visual Studio API EnvDTE.DTE.Istnieją dwa przydatne poświaty, które można wykonać na modelowania elementy projektu:
EnvDTE.Projectmoże być oddane do i z IModelingProject, jeśli projekt jest projektem modelowania i jeżeli projekt jest ładowany do bieżącego elementu AppDomain.
EnvDTE.ProjectItemmoże być oddane do i z IDiagramContext, jeśli element jest UML diagram.
Na przykład następujące projektu powinien importować tych odniesień:
EnvDTE
Microsoft.VisualStudio.ArchitectureTools.Extensibility
Microsoft.VisualStudio.Modeling.SDK.11.0
Microsoft.VisualStudio.Modeling.SDK.Diagrams.11.0
Microsoft.VisualStudio.Shell.Immutable.11.0
Microsoft.VisualStudio.UML.Interfaces
System.ComponentModel.Composition
W tym przykładzie zostanie otwarty w modelu UML w Visual Studio:
using EnvDTE; // Visual Studio API for loading diagrams
using
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Modeling;
using Microsoft.VisualStudio.Modeling.ExtensionEnablement;
// for ICommandExtension and other handler types
using Microsoft.VisualStudio.Uml.Classes;
// for basic UML types
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
// for model construction methods
using EnvDTE;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility;
Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;
// for IDiagram
...
W Visual Studio rozszerzenie, można wprowadzać niniejszej deklaracji, aby uzyskać dostęp do hosta usługodawca:
[Import] public Microsoft.VisualStudio.Shell.SVsServiceProvider ServiceProvider {get;set;}
...
W metodzie można uzyskać dostęp projektu, na przykład projektu:
DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
Project project = dte.ActiveDocument.ProjectItem.ContainingProject;
IModelingProject modelingProject = project as IModelingProject;
if (modelingProject == null) return; // not a modeling project
// Access the model's store and contents.
IModelStore store = modelingProject.Store;
foreach (IElement element in store.Root.OwnedElements) {...}
// Open all the project's diagrams.
foreach (ProjectItem item in project.ProjectItems)
{
IDiagramContext modelingItem = item as IDiagramContext;
if (modelingItem == null)
continue; // not a model diagram
IDiagram diagram = modelingItem.CurrentDiagram;
if (diagram == null)
{
// Diagram is closed. Open it.
item.Open().Activate();
diagram = modelingItem.CurrentDiagram;
}
// Access the shapes.
foreach (IShape<IElement> shape
in diagram.GetChildShapes<IElement>())
{
IElement displayedElement = shape.Element;
...
}
}
}