检查构造函数是否调用另一个构造函数

Ste*_*ris 5 c# reflection constructor cil constructor-chaining

在反射过程中,是否可以在C#中检查一个构造函数是否调用另一个?

class Test
{
    public Test() : this( false ) { }
    public Test( bool inner ) { }    
}
Run Code Online (Sandbox Code Playgroud)

我想确定每个ConstructorInfo是否在调用链的末尾.

Joe*_*ite 1

考虑看看塞西尔罗斯林

Cecil 对已编译的程序集进行操作,就像 Reflection 一样。它具有构建在其之上的更高级别的库,以支持 SharpDevelop IDE 中的重构,因此它可能有一些东西可以使这变得更容易。

Roslyn 对源代码进行操作,并为您提供基于该源代码的对象模型,因此,如果您愿意针对源代码而不是二进制文件进行工作,那么使用它可能会更容易。

(我从来没有真正使用过 Cecil 来做这样的事情,我也从来没有使用过 Roslyn,所以我只能向你指出这些项目并祝你好运。如果你确实设法让某些东西发挥作用,我很想听听事情进展如何!)