1

System.ComponentModel.DataAnnotations.CustomValidationAttribute hereのソース コードを参照しているときに、次のコード (短縮) を見つけました。

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

ex.InnerExceptionここで、コードは nullかどうかをチェックします。リフレクション呼び出しからスローされた場合、 aTargetInvocationExceptionがa になるとは思いませんでした。null InnerException

これは可能ですか?InnerExceptionその場合、が null になる可能性があるシナリオを提供してください。

4

1 に答える 1

1

MSDNは次のように述べています。

TargetInvocationException が作成されると、リフレクションを通じて呼び出されたメソッドによってスローされた例外への参照が渡されます。InnerException プロパティは、基になる例外を保持します。

したがって、理論的にはフレームワークのリフレクション メソッドのみを使用すると、null になることはありません...理論的には :P

もちろん、呼び出されていたメソッドから明示的にスローした場合は、null になる可能性があります (そうなります!)。

于 2016-09-12T11:57:48.343 に答える