2014-09-09 2 views
1

У меня есть один Enum вроде этого:Enum для класса в C#

public enum CommonMessage : ushort 
{ 
    val =1, 
    val2 = 2, 
    val3 = 3 
} 

я должен отправить эти данные в другое приложение. Общение происходит между моим приложением и другим с помощью comport (serialCommunication).

Я также возвращаюсь к данным в свое приложение.

Я хочу преобразовать этот Enum в класс. Скажите, пожалуйста, как я могу это сделать. Каким должен быть тип данных переменных.

+1

Вы уверены, что это действительно то, что вы хотите сделать? перечисления и классы используются для совершенно разных целей. – Sayse

+1

Не знаете, какая проблема у вас есть. Перечисление является примитивным типом, его можно легко сериализовать и десериализовать. Зачем вам нужен класс? – kidshaw

+0

Что вы подразумеваете под * Я хочу преобразовать этот Enum в класс *? Если вы хотите отправить другое приложение, просто отправьте целочисленное представление значения перечисления и вызовите 'Enum.ToObject' в другом приложении. –

ответ

2

Перечисление представляет собой набор именованных констант, которые представляют числа. Таким образом, вы можете просто преобразовать тип в его числовой эквивалент и затем преобразовать все, что возвращается обратно соответственно. Так что если вы хотите, чтобы передать значение в приложение, вы можете преобразовать перечисление в это числовой тип:

var myEnumNumericValue = (ushort)CommonMessage.val; //would represent "CommonMessage.val" 

Когда приложение отправляет значение было бы несколько, и вы можете преобразовать его обратно соответственно:

var enumValue = (CommonMessage)returnValue; //where return value is an ushort 
0

Если вы ДОЛЖНЫ отправить класс, отправьте Int32 - это наименьшая форма значения перечисления.

Ваш подключенный клиент может анализировать это локально, что позволяет использовать различные технологии, то есть клиент JavaScript может реализовать подходящее перечисление, или вы можете использовать ссылку на то же перечисление в .NET-клиенте. В любом случае, он все равно должен быть int и легко переносится.

Надеюсь, что это поможет.

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