0

リフレクションを使用してメソッドを呼び出す必要があります。以下は、呼び出す必要がある私のメソッドでした:

public static void DoUpdate(int? operatorId, string name, string desc)
{
    // ...do some update work here...
}

まずこのメソッドのパラメータを把握する必要がありますよね? だから私はこのコードをやった:

public static object[] GetMethodParms(MethodInfo method, NameValueCollection coll)
{
    var parms = method.GetParameters();
    // ...do some parse work here...
}

さて、私が変だと思ったことが起こりました。ご覧のとおり、パラメーター "operatorId" は Nullable でしたが、parms[0] はそれが単なる "System.Int32" であったことを示しています。

なぜこれが起こったのか、誰か説明してもらえますか?

前もって感謝します。

編集#1

すみません。私はこれらを明確にする必要があります:

. 次のコードで型が Nullable かどうかを確認できることは知っています。

if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) 
{ … }

または、別の方法を次に示します。

var IsNullable = Nullable.GetUnderlyingType(p.ParameterType) !=null;

. MethodInfo.GetParameter() が Nullable(T) パラメーターの基本的な型を返す理由がわかりません。私の場合、「int? operatorId」は「System.Int32」を返します。これは Nullable(int) であると予想されます。

4

1 に答える 1