Есть ли способ доступа к типам (классы, интерфейсы и т. Д. И их метаданные), которые доступны внутри загруженных проектов в решении в 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!
}
}
Есть идеи?