我正在尝试构建一个库来简化 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 签名,与后期绑定调用一样,您无法提前知道参数的类型(以及在调用之前将调用的所有参数插入对象数组中的任何一种方式)
提前致谢。