2016-02-27 7 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()», которая преобразует их из строки в enum? Благодарю.

+0

Вы определяете 'Enum' для' OrderType, TimeInForce и Action'? Вы тоже можете это показать? – Ian

+1

Для 'API' требуется значение' string' или '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, похоже, нравится. Позвольте мне закончить настройку тестового ордера, и я посмотрю, будет ли он выполняться. Большое спасибо! –

Смежные вопросы