【发布时间】:2012-07-05 00:43:29
【问题描述】:
我正在测试在构造函数中调用虚拟成员的效果,发现在调用该成员时产生的异常被包装在 TargetInvocationException 中。
根据docs,这是:
通过反射调用的方法抛出的异常
但是我不知道通过反射进行的任何调用。那么这是否意味着总是通过反射调用虚拟成员?如果不是,为什么在这种情况下会这样?
代码:
class ClassA
{
public ClassA()
{
SplitTheWords();
}
public virtual void SplitTheWords()
{
//I've been overidden
}
}
class ClassB : ClassA
{
private readonly String _output;
public ClassB()
{
_output = "Constructor has occured";
}
public override void SplitTheWords()
{
String[] something = _output.Split(new[]{' '}); //TargetInvocationException!
}
}
【问题讨论】:
标签: c# .net exception virtual access-modifiers