Может ли исключение TargetInvocationException, выброшенное из отражения, иметь нулевое InnerException

Просматривая исходный код для System.ComponentModel.DataAnnotations.CustomValidationAttribute здесь я увидел следующий код (сокращенно):

try
{
    methodInfo.Invoke(null, methodParams);
}
catch (TargetInvocationException ex)
{
    if (ex.InnerException != null)
    {
        throw ex.InnerException
    }
    throw;
}

Здесь код проверяет, ex.InnerException нулевой. Я не думал, что TargetInvocationException мог когда-либо иметь nullInnerException если это было выброшено из вызова вызова.

Это возможно? Если да, приведите сценарий, в котором InnerException может быть нулевым

1 ответ

Решение

MSDN утверждает, что

При создании в TargetInvocationException передается ссылка на исключение, созданное методом, вызванным посредством отражения. Свойство InnerException содержит основное исключение.

Так что теоретически, используя только методы отражения каркаса, оно никогда не должно быть нулевым... теоретически:P

Конечно, он может (и будет!) Быть нулевым, если вы явно выбросили его из вызываемого метода.

Другие вопросы по тегам