如何设置包含枚举的对象的多个参数的值?

时间:2015-09-28 21:27:48

标签: vb.net protocol-buffers protobuf-net

我在VB.NET中使用Protobuf-net将电机命令从一台计算机传递到另一台计算机。以下是我的proto文件示例,其中包含两个枚举CommandActionMotorChoice。我想在一台计算机上为每个计算机设置一个值,并从另一台计算机中检索这些值。

Public Class RemoteControl

<ProtoContract>
Public Class Command

    <ProtoContract>
    Enum CommandAction
        <ProtoMember(1)>
        HOME_MOTOR
        <ProtoMember(2)>
        MOVE_ABS
    End Enum

    <ProtoContract>
    Enum MotorChoice
        <ProtoMember(1)>
         MOTOR1
        <ProtoMember(2)>
         MOTOR2
    End Enum
End Class
End Class

我遇到了试图为动作和电机选择设置值的问题。当我只需要设置一个参数时,下面的语句就可以了

Dim myProto As New RemoteControl.Command.CommandAction
myProto= RemoteControl.Command.CommandAction.HOME_MOTOR

尝试设置两个参数时,我尝试了以下操作:

 Dim myProtoExpanded As New RemoteControl.Command
 myProtoExpanded.CommandAction = RemoteControl.Command.CommandAction.HOME_MOTOR
 myProtoExpanded.MotorChoice= RemoteControl.Command.MotorChoice.MOTOR1

编译器抛出错误,说两个左侧都是类型,不能用作表达式。在序列化之前设置myProtoExpanded的两个参数值的正确方法是什么?我想发送一个包含两个枚举信息的对象

1 个答案:

答案 0 :(得分:1)

您定义了Enum数据类型,但未将该枚举的数据成员添加到Command类中。

Public Class Command
   Enum CommandAction
      ... 
   End Enum
   Enum MotorChoice
        ....
   End Enum

   Public action as CommandAction
   Public motor as MotorChoice

End Class

myProtoExpanded.action = RemoteControl.Command.CommandAction.HOME_MOTOR
myProtoExpanded.motor = RemoteControl.Command.MotorChoice.MOTOR1