>我有两个文件如下:
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";
}
}
}
我需要获取在奥迪类(全局或本地(中创建的所有对象。我还需要获取使用这些声明的对象调用的方法的详细信息。
例如在这 2 类中,对于奥迪类需要:
- 创建的对象:- obj
- 使用此对象调用的方法:- 奔驰详细信息
- 创建其对象的类的名称:奔驰
- 该类的命名空间:a
我能够使用以下代码获取类中声明对象的列表:
var lstLocalObjects = syntaxTree.GetRoot().DescendantNodes().OfType<LocalDeclarationStatementSyntax>()
.Where(x => x.Declaration.Variables.Any(p => p.Initializer.Value.Kind().ToString().Equals("ObjectCreationExpression", StringComparison.OrdinalIgnoreCase)));
我有语法树,我不知道如何生成语义模型。是否可以仅使用语法树获取上述详细信息。请帮忙。谢谢
您需要通过调用CSharpCompilation.Create()
来创建Compilation
,传递SyntaxTree
和必要的引用(至少mscorlib
(。
然后,您可以调用GetSemanticModel(SyntaxTree)
。