我正在构建一个库,以简化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签名,因为对于后期绑定调用,您无法事先知道参数的类型(以及在拨打电话之前插入对象数组内的呼叫的所有参数的方法)
提前致谢。
我道歉,你是对的。我贴的originaly代码不能编译。 – 2008-11-12 10:55:15