【发布时间】:2021-10-05 06:13:46
【问题描述】:
我目前正在尝试解析一些随机 dll 的公共成员,我被困在使用反射获取构造函数的基础部分
public class MyClass: MySuperClass
{
public MyClass(Color color1, Color color2)
: base(0.0f, 0.0f, 0.0f, 0.0f, color1, color2)
{
//...
}
}
从类型我知道如何获取构造函数和参数,但不是对父类构造函数的调用':base(0.0f,0.0f,0.0f,0.0f,color1,color2)'
var MyType = typeof(MyClass);
foreach (ConstructorInfo MyConstructor in MyType.GetConstructors())
{
var MyParameters = MyConstructor.GetParameters();
//todo get base parameters ': base(0.0f, 0.0f, 0.0f, 0.0f, color1, color2)' ?
}
你知道是否有办法获取父构造函数调用中使用的参数/值列表吗?
【问题讨论】:
-
我认为这是不可能的。反射让您了解课程的表面。基类调用或在其他情况下对同一类的其他构造函数的调用是构造函数方法的已实现主体的一部分。因此,您需要检查生成的 IL 代码以查看是否以及如何调用不同的方法。
-
如果不反编译 CIL 主体,您将无法执行此操作。另外请注意,不仅可以调用基础构造函数。
-
谢谢大家的回复,我去看看这个方法,看看能不能搞到什么
标签: c# .net reflection constructor