c#-从Roslyn分析器中的InvocationExpressionSyntax获取命名空间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-从Roslyn分析器中的InvocationExpressionSyntax获取命名空间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1352字,纯文字阅读大概需要2分钟。
内容图文
![c#-从Roslyn分析器中的InvocationExpressionSyntax获取命名空间](/upload/InfoBanner/zyjiaocheng/666/e01eb817502546c6bc96749684a99554.jpg)
我正在尝试为Roslyn创建一个分析器,该分析器将阻止在给定名称空间中使用Asserts(以确保维护项目设计标准).
我已经可以确认这是否是一个断言,但是我不确定如何从上下文中获取名称空间.
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeAction(AnalyzeMethod, SyntaxKind.InvocationExpression);
}
private static void AnalyzeMethod(SyntaxNodeAnalysisContext context)
{
var expression = (InvocationExpressionSyntax)context.Node;
var memberAccessExpression = expression.Expression as MemberAccessExpressionSyntax;
if (memberAccessExpression == null) return;
var memberSymbol = ModelExtensions.GetSymbolInfo(context.SemanticModel, memberAccessExpression).Symbol as IMethodSymbol;
if (!memberSymbol?.ToString().Contains("Assert") ?? true) return;
//Check if we're inside the Page Namespace.
//This is an Assert, lets fail it.
var diagnostic = Diagnostic.Create(Rule, memberAccessExpression.GetLocation(), memberAccessExpression.Name);
context.ReportDiagnostic(diagnostic);
}
在检查上下文对象本身时,我可以看到一个ContainingSymbol对象,其中包含一个ContainingNamespace属性,但是当我尝试对此进行编码时,似乎无法访问它.
获取类名称空间的最简单方法是什么?即我想要断言所在类的名称空间,而不是断言的名称空间.
一个额外的问题-是否有任何与此相关的文档?
解决方法:
确保您已通过NuGet下载了最新的软件包.
但是我不明白为什么您可以在运行时使用调试器看到它??,却无法对其进行编码.
内容总结
以上是互联网集市为您收集整理的c#-从Roslyn分析器中的InvocationExpressionSyntax获取命名空间全部内容,希望文章能够帮你解决c#-从Roslyn分析器中的InvocationExpressionSyntax获取命名空间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。