Доступ к списку доступных типов из Visual Studio Add In? - PullRequest
2 голосов
/ 15 ноября 2011

Есть ли способ доступа к типам (классы, интерфейсы и т. Д. И их метаданные), которые доступны внутри загруженных проектов в решении в Visual Studio?

Чтобы быть более конкретным, япытаюсь разработать простую надстройку Visual Studio, чтобы обеспечить функциональность «Перейти к реализации»:

https://bitbucket.org/jbubriski/go-to-implementation/

Я понимаю, что это существует в других продуктах Add Ins / Extensions, но я делаю голую, чтобы мне не приходилось иметь дело с замедлениями, зависаниями и сбоями других добавленных «функций».

Если вы посмотрите на источник, яЯ могу получить выбранный текст, используя очень простой и хрупкий метод.Учитывая выбор, я в основном предполагаю, что это интерфейс, убираю 'I' и выполняю поиск по всему решению для ProjectItems, где имя файла заканчивается на "\TypeName.cs".

Есть ли некоторыевнутренний список типов, которые Visual Studio поддерживает для intellisense, к которому у меня есть доступ?Было бы неплохо сказать:

var vsType = VS.GetLocalType("TypeName")

Тогда получите доступ

vsType.FileName

Еще одним шагом будет

foreach(var vsType in VS.GetlocalTypes())
{
    if(vsType.Implements.Contains("IInterfaceName"))
    {
        // Found something that implements my interface!
    }
}

Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Более подробно позже, если у меня будет время, но смотрите http://msdn.microsoft.com/en-us/library/system.componentmodel.design.ityperesolutionservice.aspx.

1 голос
/ 16 ноября 2011

Не уверен насчет реализации собственных дополнений VS, но если вы используете DevExpress.CodeRush, функциональность определения перехода должна основываться на текущей позиции в исходном файле, и сделать что-то подобное, чтобы получить ссылку на объявление типа: ((TypeReferenceExpression)CodeRush.Source.Active).GetDeclaringType()

PS Я понимаю, что не ответил на ваш вопрос, но надеюсь, что это даст вам направление на поиск решения

...