2016-02-27 60 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似乎很喜歡它。讓我完成設置測試訂單,我會看看它是否執行。非常感謝! –

相關問題