예제 #1
0
        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)
        }