Postupy: Otevření modelu UML pomocí rozhraní API sady Visual Studio
Modely a diagramy můžete také otevřít v uživatelském rozhraní Visual Studio pomocí rozhraní API.
Pokud chcete pouze přečíst model v kódu programu bez zviditelnění pro uživatele, můžete použít následující metody:
Sběrnice modelu Visual Studio umožňuje přístup k modelů a prvkům v sobě a poskytuje standardní metodu vytváření vazeb mezi jednotlivými modely.Další informace naleznete v tématu Postupy: Integrace modelů UML s jinými modely a nástroji.
Model lze otevřít v režimu jen pro čtení.Další informace naleznete v tématu Postupy: Čtení modelu UML v programovém kódu.
Otevírání modelů a diagramů v aplikaci Visual Studio
Pro otevření modelu v uživatelském rozhraní použijte standardní rozhraní API Visual Studio EnvDTE.DTE.K dispozici jsou dvě užitečná přetypování, které lze provést na položkách projektu modelování:
EnvDTE.Project může být převeden do a z IModelingProject, pokud je projekt projektem modelování a projekt je načten do aktuální AppDomain.
EnvDTE.ProjectItem může být převeden do a z IDiagramContext, pokud je položka diagramu UML.
Pro následující příklad váš projekt musí importovat tyto odkazy:
EnvDTE
Microsoft.VisualStudio.ArchitectureTools.Extensibility
Microsoft.VisualStudio.Modeling.Sdk.12.0
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0
Microsoft.VisualStudio.Shell.Immutable.12.0
Microsoft.VisualStudio.Uml.Interfaces
System.ComponentModel.Composition
Tento příklad otevře model UML v aplikaci 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
...
V rozšíření Visual Studio můžete provést toto prohlášení k získání přístupu k poskytovateli služby hostitele:
[Import] public Microsoft.VisualStudio.Shell.SVsServiceProvider ServiceProvider {get;set;}
...
V metodě je možné otevřít projekt, například aktuální projekt:
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;
...
}
}
}