1
protobuf-netを使用して別のカスタムクラス(MessageArgumentsと呼ばれる)のリストを含むRPCMessageというクラスを送信しようとしています。 MessageArgumentsを拡張して、引数の値の型(この場合はfloat)を希望する別のクラスを持つように拡張しました。次の例外が発生します。ArgumentNullException:既知の型を空白にすることはできません。私はそれが役立ちます.Net 3.5を使用しています。Protobuf-Net ArgumentNullException
シリアライズするコード:店のメッセージに
public static void EncodeMessage(MessageType messageType, object messageClass, ref NetOutgoingMessage outMessage){
byte[] serialised;
var serializableObject = messageClass as RPCMessage;
var memStream = new MemoryStream();
Serializer.SerializeWithLengthPrefix(memStream, serializableObject,
PrefixStyle.Base128);
}
はコード:
[Serializable,
ProtoContract,
ProtoInclude(3, typeof(FloatArgument))]
public class RPCMessage {
[ProtoMember(1)]
public byte code;
[ProtoMember(2)]
public List<MessageArgument> args;
public RPCMessage(){}
public RPCMessage (byte _code, List<MessageArgument> _args){
code = _code;
args = _args;
}
}
メッセージの引数を格納するためのコード:
[Serializable,
ProtoContract,
ProtoInclude(3, typeof(FloatArgument)))]
public class MessageArgument{
[ProtoMember(1)]
public byte id;
public MessageArgument(){}
public MessageArgument(byte _id){
id = _id;
}
}
そして最後に、
によって呼び出されますList<MessageArgument> args = new List<MessageArgument>();
args.Add(new FloatArgument(0, 1f));
MessageParser.EncodeMessage(type, new RPCMessage(0, args), ref outMessage);
私はおそらく基本的な何かが欠けている知っているが、私の人生は、それは私が完全にREPROするのに十分なを持っていない
例外からスタックトレースが発生する可能性はありますか? –