我在VB.NET中使用Protobuf-net将电机命令从一台计算机传递到另一台计算机。以下是我的proto文件示例,其中包含两个枚举CommandAction
和MotorChoice
。我想在一台计算机上为每个计算机设置一个值,并从另一台计算机中检索这些值。
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
的两个参数值的正确方法是什么?我想发送一个包含两个枚举信息的对象
答案 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