public void ReadObject(BinSerializer bs) { Source = (InvokeSource)bs.ReadByte(); ContentType = (InvokeProtocol)bs.ReadByte(); WaitHandle = new IntPtr(bs.ReadInt64()); SourceMsgId = bs.ReadInt32(); Service = bs.ReadString(); //注意统一转换为RoutedSession if (bs.ReadBoolean()) { ulong id = bs.ReadUInt64(); int levels = bs.ReadInt32(); var path = new TreeNodePath(levels); for (int i = 0; i < levels; i++) { path[i] = new TreeNodeInfo { ID = bs.ReadGuid(), Text = bs.ReadString() }; } Guid?empID = null; bool isExternal = bs.ReadBoolean(); if (!isExternal) { empID = bs.ReadGuid(); } string tag = bs.ReadString(); Session = new RoutedSession(id, path, empID, tag); } var args = new InvokeArgs(); args.ReadObject(bs); Args = args; //Don't use Args.ReadObject(bs) }