【发布时间】:2018-03-15 11:51:34
【问题描述】:
我有两个文件如下:
namespace a
{
Class Audi
{
public string Model(string a)
{
Benz obj= new Benz();
var str=obj.BenzDetails();
return str;
}
}
}
namespace a
{
Class Benz
{
public string BenzDetails()
{
return "some details";
}
}
}
我需要获取在 Audi 类(全局或本地)中创建的所有对象。我还需要获取使用这些声明的对象调用的方法的详细信息。
例如在这2个类中,对于奥迪类需要:
- 对象已创建:- obj
- 使用此对象调用的方法:- BenzDetails
- 创建对象的类名:Benz
- 该类的命名空间:a
我可以使用以下代码获取类中已声明对象的列表:
var lstLocalObjects = syntaxTree.GetRoot().DescendantNodes().OfType<LocalDeclarationStatementSyntax>()
.Where(x => x.Declaration.Variables.Any(p => p.Initializer.Value.Kind().ToString().Equals("ObjectCreationExpression", StringComparison.OrdinalIgnoreCase)));
我有语法树,我不知道如何生成语义模型。 是否可以仅使用语法树获得上述详细信息。请帮忙。 谢谢
【问题讨论】:
标签: c# .net abstract-syntax-tree roslyn