在我的函数内部的某个地方,我需要做这样的事情:
smsg["isin"].set(ii.ISIN);
smsg["client_code"].set(Constants.CLIENT_CODE);
smsg["type"].set(1);
smsg["dir"].set(order.Operation == Side.Buy ? 1 : 2);
smsg["amount"].set(order.Lots);
smsg["price"].set(textPrice);
smsg["ext_id"].set(0);
set
方法有很多可以接受的重载,int
总共大约15 种方法。string
boolean
DateTime
重构后,我决定函数只使用参数列表而忽略其他变量order
ii
等。问题是我不知道如何通过函数参数传递这些参数
public uint ExecuteTransaction(Dictionary<string, object> parameters)
{
....
foreach (var parameter in parameters)
{
smsg[parameter.Key].set(parameter.Value); // compile time error!
}
编译器不知道要使用哪个重载,所以我有这样的错误:
The best overloaded method match has some invalid arguments
我的字典包含每个参数的适当值。所以布尔参数包含布尔值等。这就是我声明 Dictionary 包含通用类型的原因object
。
谢谢你的帮助!