リフレクションを使用してメソッドを呼び出す必要があります。以下は、呼び出す必要がある私のメソッドでした:
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) であると予想されます。