ParameterInfo.IsOut、ParameterInfo.IsIn (私が見る限りどちらも常に false)、ParameterAttributes が存在するにもかかわらず、"ref" および "out" パラメーターが特別な属性によってマークされていないことを知って驚きました。 In および ParameterAttributes.Out。代わりに、「ref」パラメーターは実際には特別な種類の「Type」オブジェクトによって表され、「out」パラメーターは追加の属性 (どのような属性かはまだわかりません) を持つ単なる ref パラメーターです。
とにかく、参照による引数を作成するには Type.MakeByRefType() を呼び出しますが、私の質問は、参照による型が既にある場合、どうすれば元の型に戻るのでしょうか?
ヒント: UnderlyingSystemType ではありません:
Type t = typeof(int);
Console.WriteLine(t.MakeByRefType().UnderlyingSystemType==t); // FALSE