【问题标题】:Roslyn - find declarations with fully qualified nameRoslyn - 查找具有完全限定名称的声明
【发布时间】:2015-02-23 20:40:33
【问题描述】:

我正在使用 SymbolFinder.FindDeclarationsAsync() 方法来查找项目中声明的符号。但该方法与完全限定名称不匹配。

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

以上代码返回多个 String 声明,如 System.String、System.Data.String、System.Reflection.String 等

有没有办法指定“System.String”并只获取指定完全限定名称的 ISymbol 对象?

【问题讨论】:

  • FindDeclarationsAsync 是当您想按全名搜索 not 时用于查找符号的 API。请参阅 Kevin 对正确 API 的回答。

标签: c# roslyn fully-qualified-naming


【解决方案1】:

听起来您正在寻找Compilation.GetTypeByMetadataName()

【讨论】:

  • 此方法目前已失效;有关详细信息,请参阅github.com/dotnet/roslyn/issues/3864。向下滚动以获得解决方法。
  • 破碎是一个相当强烈的措辞。这实际上就是我们设计的方法要做的。我们考虑在 IAssemblySymbol 上添加一个版本来处理这种情况,但还没有。我们还可以使该方法接受程序集限定名称。
  • (本不想“破”引起争议,但想不出简洁的方式来表示GitHub上的对话。)我拿了bug OP的思路,做了一个方法@ 987654323@ 其结果我通常称之为First。所以,如果我有投票权,就是这样。
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
相关资源
最近更新 更多