【发布时间】:2008-11-12 10:15:28
【问题描述】:
我正在尝试构建一个库来简化 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)的内部 List 确实被修改了,但调用外的值没有被修改。
有谁知道克服这个限制的简单方法? AddParameter 签名无法修改,与后期绑定调用一样,您无法提前知道参数的类型(以及在调用之前将调用的所有参数插入对象数组中的任何一种方式)
提前致谢。
【问题讨论】:
标签: c# value-type late-binding