Диаграммы классов .NET без использования дизайнера - PullRequest
2 голосов
/ 08 апреля 2009

В .NET возможно ли создавать диаграммы классов (.cd) программно (C #)? Если так, то как?

PD: Очевидно, я не спрашиваю, как это сделать с помощью IDE. Я знаю, что могу перетаскивать классы в элемент ClassDiagram.

Ответы [ 4 ]

3 голосов
/ 08 апреля 2009

Я только что открыл .cd файл с помощью блокнота, это обычный XML ... Мне не должно быть так сложно генерировать его программно.

0 голосов
/ 08 апреля 2009

Я прошу прощения за половину ответа, но чтобы увидеть, действительно ли это возможно, потребуется немало времени.

Если вы посмотрите на формат XML, он довольно загадочный, особенно запись Hash, которую, если вы удалите, IDE удалит запись (я так много пытался).

Чтобы на самом деле автоматизировать его, вам нужно использовать API автоматизации VS, EnvDTE. API довольно загадочные, а также обобщенные. Я не смог найти определенный класс или что-либо, имеющее дело с диаграммами классов, в просмотре документации.

Если вам достаточно потратить пару часов, начните с того, что создайте его вручную, чтобы вы могли проверить его с помощью API автоматизации. С COM-объектом EnvDTE (либо CoCreated, либо предоставленным в макросе VS) используйте DTE.Solution.Open, чтобы открыть свое решение. Затем используйте DTE.Solution.Projects, чтобы найти свой проект с помощью диаграммы классов, и Project.ProjectItems, чтобы найти файлы диаграмм классов.

Оттуда я сначала посмотрю, не указало ли свойство Kind в ProjectItem что-то особенное, а затем поиграл с другими свойствами и отразил свойство Object в ProjectItem, чтобы выяснить, есть ли у вас что-то особенное.

Если вам просто нужно сгенерировать его один раз, взгляните на свойство DTE.Commands, чтобы получить список доступных команд. Команда, вызываемая щелчком правой кнопкой мыши по меню, должна быть где-то там. Затем вы можете использовать DTE.Windows.Items (Constants.vsWindowKindSolutionExplorer) .Object как UIHeirarchy, чтобы получить окно обозревателя решений и использовать UIHeirarchy и UIHeirarchyItem, чтобы выбрать файлы, а затем вызвать команду.

Извините, я не могу привести полный пример, но так как у меня нет удобного кода для обхода дерева, это займет пару часов.

0 голосов
/ 08 апреля 2009

Да, вы просто открываете Visual Studio, щелкаете правой кнопкой мыши по вашему CS-файлу или по своему проекту и выбираете View Class Diagram. .Cd создается автоматически.

0 голосов
/ 08 апреля 2009

Выберите файлы .cs, для которых требуется диаграмма классов, и выберите Просмотр диаграммы классов, и файл .cd будет создан и отображен.

...