2009-04-07 5 views
2

In .NET ist es möglich, Klassendiagramme (. Cd) programmgesteuert (C#) zu generieren? Wenn das so ist, wie?.NET Class Diagrams ohne Verwendung des Designers

PD: Offensichtlich frage ich nicht nach Anweisungen, wie man dies unter Verwendung der IDE erzeugt. Ich weiß, dass ich die Klassen zu einem ClassDiagram Element ziehen und ablegen kann.

Antwort

3

Ich habe gerade eine .cd-Datei mit dem Editor geöffnet, es ist plain XML ... Ich sollte nicht so schwer sein, es programmgesteuert zu generieren.

0

Wählen Sie die CS-Dateien aus, für die Sie ein Klassendiagramm erstellen möchten, und wählen Sie Klassendiagramm anzeigen aus. Es wird eine CD-Datei generiert und angezeigt.

+0

Das ist nicht vom Code. –

+0

ja ist es ... der Code ist der Eingang, also, aus dem Code ... ;-P – Shog9

+0

Ich denke, ich verstehe, was Sie jetzt meinen, aber diese Antwort weiß ich nicht. –

0

Ja, Sie öffnen einfach Visual Studio und klicken Sie mit der rechten Maustaste auf entweder Ihre .cs-Datei oder Ihr Projekt und wählen Sie View Class Diagram. Die .cd wird automatisch erstellt.

0

Ich entschuldige mich für die halbe Antwort, aber um zu sehen, ob dies tatsächlich möglich ist, wird ziemlich viel Zeit in Anspruch nehmen.

Wenn Sie das XML-Format betrachten, ist es ziemlich kryptisch, besonders der Hash-Eintrag, der, wenn Sie löschen, dann wird die IDE den Eintrag löschen (ich habe so viel versucht).

Um es tatsächlich zu automatisieren, müssten Sie die VS-Automatisierungs-APIs EnvDTE verwenden. Die APIs sind ziemlich kryptisch und auch verallgemeinert. Ich konnte keine bestimmte Klasse oder irgendetwas, das sich mit Klassendiagrammen beschäftigt, in der Dokumentation finden.

Wenn es wichtig genug für Sie ist, ein paar Stunden zu verbringen, würden Sie damit beginnen, eines manuell zu erstellen, damit Sie es mit der Automatisierungs-API untersuchen können. Mit dem EnvDTE COM-Objekt (entweder CoCreated oder in einem VS-Makro bereitgestellt) verwenden Sie DTE.Solution.Open, um Ihre Lösung zu öffnen. Verwenden Sie dann DTE.Solution.Projects, um Ihr Projekt mit dem Klassendiagramm zu suchen, und Project.ProjectItems, um die Klassendiagrammdateien zu finden.

Von dort würde ich zuerst sehen, ob die Kind-Eigenschaft auf der ProjectItem etwas Besonderes angezeigt, und dann mit anderen Eigenschaften geifern und reflektieren über die Object-Eigenschaft des ProjectItem, um zu sehen, ob Sie etwas Besonderes bekommen.

Wenn Sie es nur einmal generieren müssen, werfen Sie einen Blick auf die Eigenschaft DTE.Commands, um eine Liste der verfügbaren Befehle zu erhalten. Der Befehl, der durch Klicken mit der rechten Maustaste auf das Menü aufgerufen wird, sollte sich irgendwo befinden. Dann könnten Sie DTE.Windows.Items (Constants.vsWindowKindSolutionExplorer) .Object als UIHeirarchy verwenden, um das Lösungs-Explorer-Fenster zu erhalten und mit UIHeirarchy und UIHeirarchyItem zu experimentieren, um die Dateien auszuwählen und dann den Befehl aufzurufen.

Entschuldigung, ich kann kein vollständiges Beispiel liefern, aber da ich den Tree-Walking-Code nicht zur Hand habe, würde es ein paar Stunden dauern.

Verwandte Themen