さて、私はParameterInfo
クラスのプロパティに混乱しています。
残念ながら、ドキュメントはあまり明確ではありません。例ではメソッドの作成方法を示していますが、C#でのこれらのメソッドの外観は示していません。
誰かがこれらのプロパティについてもっと話すことができます:
DefaultValue
HasDefaultValue
IsIn
IsLcid
IsOptional
IsOut
IsRetval
そして、どの組み合わせがどのメソッドパラメータにつながるか。
次の出力を提供する簡単なプログラムを作成しました。
メソッド名 void M1(object param)
M1IL
署名:.method public hidebysig instance void M1(object param) cil managed
メソッドパラメーターの説明:
参照によって渡されますFalse
HasDefaultValue = False
IsIn = False
IsLcid = False
IsOptional = False
IsOut = False
IsRetVal =False
メソッド名 void M2(object param = null)
M2IL
署名.method public hidebysig instance void M2([opt] object param) cil managed
メソッドパラメーターの説明:
参照によって渡されますFalse
HasDefaultValue = True
DefaultValue = null
IsIn = False
IsLcid = False
IsOptional = True
IsOut = False
IsRetVal =False
メソッド名 void M3(out object param)
M3IL
署名.method public hidebysig instance void M3([out] object& param) cil managed
メソッドパラメーターの説明:参照によって
渡されるTrue
HasDefaultValue = False
IsIn = False
IsLcid = False
IsOptional = False
IsOut = True
IsRetVal =False
メソッド名 void M4(ref object param)
M4IL
シグネチャ.method public hidebysig instance void M4(object& param) cil managed
メソッドパラメータの説明:参照によって
渡されますTrue
HasDefaultValue = False
IsIn = False
IsLcid = False
IsOptional = False
IsOut = False
IsRetVal=False
メソッド名 void M5([In] object param)
M5IL
シグネチャ.method public hidebysig instance void M5([in] object param) cil managed
メソッドパラメーターの説明:
参照によって渡されますFalse
HasDefaultValue = False
IsIn = True
IsLcid = False
IsOptional = False
IsOut = False
IsRetVal =False
メソッド名 void M6([Out] object param)
M6IL
シグネチャ.method public hidebysig instance void M6([out] object param) cil managed
メソッドパラメーターの説明:
参照によって渡される
FalseHasDefaultValue= False
IsIn = False
IsLcid = False
IsOptional = False
IsOut = True
IsRetVal =False
メソッド名 void M7([Out] out object param)
M7IL
シグネチャ.method public hidebysig instance void M7([out] object& param) cil managed
メソッドパラメーターの説明:参照によって
渡されるTrue
HasDefaultValue = False
IsIn = False
IsLcid = False
IsOptional = False
IsOut = True
IsRetVal =False
メソッド名 void M8([DefaultValue(null)] object param)
M8IL
シグネチャ.method public hidebysig instance void M8(object param) cil managed
メソッドパラメーターの説明:
参照によって渡されますFalse
HasDefaultValue = False
IsIn = False
IsLcid = False
IsOptional = False
IsOut = False
IsRetVal=False
メソッド名M9 void M9([DefaultValue(-10)] int param = 10)
ILシグネチャ.method public hidebysig instance void M9([opt] int32 param) cil managed
メソッドパラメータの説明:
パラメータ名param
は参照によって渡されますFalse
HasDefaultValue = True
DefaultValue = 10
IsIn = False
IsLcid = False
IsOptional = True
IsOut = False
IsRetVal =False
メソッド名 void M10([Optional] int param)
M10IL
シグネチャ.method public hidebysig instance void M10([opt] int32 param) cil managed
メソッドパラメータの説明:
参照によって渡されますFalse
HasDefaultValue = False
IsIn = False
IsLcid = False
IsOptional = True
IsOut = False
IsRetVal = False
と思いますIn
が、属性はSystem.Runtime.InteropServicesのnamesapceにあるため、COMに関連しています。
しかし、やはりドキュメントはかなり貧弱です。:(Out
Optional
そして、RetValとは何ですか?それはどこで使用されますか?