Я предполагаю, что номера строк выключены (фактическая причина для этого не так важна), и исключение на самом деле выдается этим выражением:
method.DeclaringType.Namespace
И причина, по которой вы можете увидетьИсключение NullReference вызвано тем, что выражение new StackFrame(1)
парой предыдущих строк иногда может возвращать пустой кадр.Пустой фрейм означает, что вызов .GetMethod()
вернет ноль, и вы идете.
Причина, по которой вы иногда получаете пустой фрейм, заключается в том, что компилятор точно в срок может выбрать встроенный короткий, многократновызываемые методы, такие как в вашем коде.Это отбросит ваш стек вызовов, так что в лучшем случае вы получите метод более высокого уровня, чем вы предполагали, или в худшем случае (в вашем методе Main) нет более высокого метода, и вы получите ноль.