2016-02-27 62 views
-1

我正在使用代理的dll文件和命令通过API发出请求的股票交易应用程序。最大的挑战(至少对我来说)一直在弄清楚如何为API提供输入所需的各种数据类型。现在我正在研究一些测试代码,将购买1股股票。我已经能够找出许多必要的转换,但enum仍然不能避免。有没有简单的方法将这些字符串值转换为枚举?

 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

您是否为'OrderType,TimeInForce和Action'定义了'Enum'?你也可以展示它吗? – Ian

+1

“API”需要一个“字符串”或“int”值?您的程序可以使用任一枚举的枚举。 – ja72

+0

[获取Enum值的名称]的可能重复(http://stackoverflow.com/questions/16039037/get-the-name-of-enum-value) – ja72

回答

2

如果字符串由枚举型匹配的名字,你可以这样解析它们:

(OrderType) Enum.Parse(typeof(OrderType), "Market"); 

另外,还存在一个TryParse版本,你可以使用。两个版本都有重载以在匹配名称时忽略大小写。

如果字符串与枚举中的名称不匹配,则必须创建自己的映射器。可以使用简单的开关盒来完成。

+0

VS似乎很喜欢它。让我完成设置测试订单,我会看看它是否执行。非常感谢! –

相关问题