Roslyn - найти объявления с полным именем

Я использую метод SymbolFinder.FindDeclarationsAsync (), чтобы найти символ, объявленный в проекте. Но метод не подходит для полностью определенных имен.

var symbols = SymbolFinder.FindDeclarationsAsync(projects, "String", true).Result;

Приведенный выше код возвращает несколько объявлений для String, таких как System.String, System.Data.String, System.Reflection.String и т. Д.

Есть ли способ указать "System.String" и получить только объект ISymbol для указанного полного имени?


person CasKaDev    schedule 26.12.2014    source источник
comment
FindDeclarationsAsync - это API, который вы используете для поиска символов, когда вы хотите искать не по полному имени. См. Ответ Кевина, чтобы узнать о подходящем API.   -  person Jason Malinowski    schedule 30.12.2014


Ответы (1)


Похоже, вы ищете Compilation.GetTypeByMetadataName().

person Kevin Pilch    schedule 26.12.2014
comment
Этот метод в настоящее время не работает; подробнее см. github.com/dotnet/roslyn/issues/3864. Прокрутите вниз, чтобы найти обходной путь. - person Grault; 16.12.2015
comment
Сломанный - довольно сильная формулировка. Именно для этого мы и разработали метод. Мы рассматривали возможность добавления его версии в IAssemblySymbol для обработки этого случая, но еще не сделали этого. Мы также потенциально могли бы заставить метод принимать полные имена сборки. - person Kevin Pilch; 16.12.2015
comment
(Я не собирался вызывать споры о том, что слово «сломанный») Так что если у меня есть голос, то все. - person Grault; 16.12.2015