関数内のどこかで、次のようなことをする必要があります。
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
メソッドには、string
、boolean
、などを受け入れることができるオーバーロードがたくさんありDateTime
ます。合計で約 15 のメソッドがあります。
リファクタリングの後、他の変数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
た。
ご協力いただきありがとうございます!