Dar*_*mas 1 c# roslyn roslyn-code-analysis
我想写一个Roslyn代码分析器; 如果ObjectCreationExpression是从本地类(在当前项目或当前解决方案中的项目中)创建对象,则需要解决这个问题; 或者如果该类来自其他地方,如基类库或Nuget包等.
我怎么知道罗斯琳上课的来源?
你只能在语义模型的帮助下得到它.您可以通过Locations或DeclaringSyntaxReferences获取构造函数的符号以及类型来源的检查,例如:
// ObjectCreationExpression node == ...;
// SemanticModel model = ...;
var symbol = model.GetSymbolInfo(node).Symbol; // the constructor symbol
var type = symbol.ContainingType; // the class symbol
var isFromSource = type.DeclaringSyntaxReferences.Length > 0
Run Code Online (Sandbox Code Playgroud)