コード例 #1
0
        public async Task <object> ExecuteCommand(object command)
        {
            JObject cmd         = command as JObject;
            string  commandName = cmd.GetValue("CommandName").Value <string>();

            Type commandType    = CommandRouter.GetCommandType(commandName);
            Type commandHandler = CommandRouter.GetHandler <CommandHandler>(commandName);

            object deserializedCommand = cmd.ToObject(commandType);

            return(await Task.Run(() =>
            {
                CommandHandler handler = Activator.CreateInstance(commandHandler, new object[] { deserializedCommand }) as CommandHandler;
                using (ICommandResult commandResult = handler.Handle())
                {
                    if ((deserializedCommand as Command).CompressResult)
                    {
                        byte[] byteArray = commandResult.ToByteArray();
                        object compressed = ObjectCompressor.Compress(byteArray);
                        return compressed;
                    }
                    return commandResult;
                }
            }));
        }