C# でのレイト バインディング呼び出しを簡素化するためのライブラリを構築しようとしていますが、参照パラメーターで問題が発生しています。メソッド呼び出しで使用されるパラメーターを追加する次のメソッドがあります
public IInvoker AddParameter(ref object value)
{
//List<object> _parameters = new List<object>();
_parameters.Add(value);
//List<bool> _isRef = new List<bool>();
_isRef.Add(true);
return this;
}
値型はオブジェクトとしてボックス化され、変更されないため、これは機能しません。例えば:
int param1 = 2;
object paramObj = param1;
//MulFiveRef method multiplies the integer passed as a reference parameter by 5:
//void MulFiveRef(ref int value) { value *= 5; }
fi.Method("MulFiveRef").AddParameter(ref paramObj);
それはうまくいきません。遅延バインディング呼び出しは成功し、パラメーター (_parameters ) を保持する内部リストは変更されますが、呼び出しの外側の値は変更されません。
この制限を克服する簡単な方法を知っている人はいますか? AddParameter シグネチャは変更できません。遅延バインディング呼び出しと同様に、パラメーターのタイプを事前に知ることはできません (また、呼び出しを行う前にオブジェクト配列内に呼び出しのすべてのパラメーターを挿入します)。
前もって感謝します。