【发布时间】:2017-10-25 04:03:14
【问题描述】:
假设我有一个基类B 和一个派生类EB。如何检查每个EB 的构造函数调用哪个基构造函数?
是否可以通过语义模型做到这一点?
说明我尝试的代码如下:
var typeSymbol = semanticModel.GetDeclaredSymbol(classDeclarationSyntax);
IMethodSymbol ctor1 = typeSymbol.Constructors[0];
IMethodSymbol ctor2 = typeSymbol.Constructors[1];
我无法跟踪任何公共接口(如IConstructorSymbol),因此我可以将ctor0 和ctor1 转换为。
【问题讨论】:
-
这不是元数据的一部分;你需要源代码。
-
好吧,我以某种方式绕过了限制,方法是返回到语法,然后再返回到语义,然后再返回到语法等等,直到到达顶部构造函数。我现在的问题是为什么语义不存储这种信息(构造函数链)。这不就是语义模型的意义吗?
标签: c# roslyn roslyn-code-analysis