我正在开发一个股票交易应用程序,它利用经纪人的dll文件和命令通过API发出请求。最重要的挑战(至少对我来说)一直在弄清楚如何为API提供输入所需的各种数据类型。现在我正在研究一些将购买1股股票的测试代码。我已经能够弄清楚但枚举的许多必要的转换仍然无法实现。
InsertOrderRequest insertOrderRequest = new InsertOrderRequest();
insertOrderRequest.m_accountNumber = "00000001";
insertOrderRequest.m_symbolId = Convert.ToUInt64(1900028);
insertOrderRequest.m_quantity = Convert.ToDouble(1);
insertOrderRequest.m_orderType = "Market"; //Needs to be enum
insertOrderRequest.m_timeInForce = "Day"; //Needs to be enum
insertOrderRequest.m_action = "Buy"; //Needs to be enum
insertOrderRequest.m_primaryRoute = "AUTO";
你可以看到我标记为“需要枚举”的3行。现在我已进入对象浏览器并确定“市场”,“日”和“购买”是适当的响应,但它们不是正确的数据类型。是否有一行类似于“Convert.ToDouble()”的代码,它们会将这些代码从字符串转换为枚举?感谢。
答案 0 :(得分:2)
如果字符串与枚举中的名称匹配,您可以像这样解析它们:
(OrderType) Enum.Parse(typeof(OrderType), "Market");
或者,您还可以使用TryParse
版本。两个版本都有重载,在匹配名称时忽略大小写。
如果字符串与枚举中的名称不匹配,则必须创建自己的映射器。可以使用简单的开关盒来完成。