Udostępnij za pośrednictwem


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:

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;
       ...
     }
   }
} 

Zobacz też

Koncepcje

Programowanie przy użyciu interfejsu API UML

Rozszerzanie modeli UML i diagramów