Вызываются ли виртуальные члены через отражение (в нормальных обстоятельствах )?

Я тестировал эффекты вызова виртуального члена в конструкторе и обнаружил, что при вызове этого члена результирующее исключение было заключено вTargetInvocationException.

Согласно документам это:

The exception that is thrown by methods invoked through reflection

Однако я не знаю о каких-либо вызовах через отражение. Значит ли это , что виртуальные члены всегда вызываются через отражение? Если нет, то почему в данном случае так?

Код:

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!
        }
    }

6
задан m.edmondson 4 July 2012 в 13:43
поделиться