微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ISymbol

如何解决ISymbol

我正在使用 Microsoft.CodeAnalysis.PublicApiAnalyzers获取我的应用的公共 api 的文本表示。公共 api 的文本,例如类 A 的认构造函数,是 A.A() -> void

分析器的源代码使用此方法 ApiName GetPublicApiName(ISymbol symbol)生成 api 的文本表示。在内部,此方法使用 ISymbol.ToDisplayString 来构造文本表示。

给定一个文本表示,我想从中创建一个 ISymbol 实例。 但我找不到一个 api 来做到这一点,比如 ISymbol Parse(string)ISymbol CreateFromText(string) Microsoft.CodeAnalysis 中是否存在这样的 api 我只是没有找到它,还是应该尝试不同的方法

解决方法

没有公共 API 可以从 Roslyn 中的字符串生成符号。您可以创建语法节点,将它们传递给编译对象,并从该编译中获取符号,但如果没有文本或句法表示,则无法生成符号。

如果您的目标是在没有任何句法表示的情况下生成类型,我会研究 cecil

如果您确实想生成具有底层语法的类型,我会查看 roslyn 报价网站 here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。