使用类型DerivedClassB
上的反射,我们可以确定:
a)它使用带有字符串参数的基类ctor
b)它通过的实际价值?
public class BaseClass
{
public BaseClass()
{
}
public BaseClass(string someParameter)
{
}
}
public class DerivedClassA : BaseClass
{
public DerivedClassA()
{
}
}
public class DerivedClassB : BaseClass
{
public DerivedClassB(): base("canWeFindThis")
{
}
}
答案 0 :(得分:4)
a)是的。从技术上讲,你可以找出调用哪些其他构造函数,如果从ConstructorInfo.GetMethodBody()
读取信息但没有像Mono.Cecil这样的辅助库,则必须从字节数组中解码IL。
b)在您的情况下,是,但通常不是。反射只能用于反映静态数据,而不是运行时动态状态,因此您无法使用它来知道哪些值作为参数传递给构造函数,除非它被指定为文字,就像您所拥有的那样在哪种情况下,您可以使用与ConstructorInfo.GetMethodBody()
或Mono.Cecil相同的技术。
答案 1 :(得分:1)
作为后续内容,我意识到传递给基类的值实际上是通过基类上的属性公开的。
因此,对于我的场景,我只是实例化了类型,然后询问了属性的值,以找出构造函数中实际传递的内容。 HTH。