public byte[] Handle(byte[] cmd, string cmdTypeFullName, string resultTypeFullName)
        {
            try
            {
                return(HandleCore());
            }
            catch (Exception e)
            {
                Logger.ErrorException("处理命令时出现异常。 cmdType : {cmdType} resultType : {resultType} data : {cmd}", e);
                throw;
            }

            byte[] HandleCore()
            {
                WriteDiagnostics(() => cmd);
                using (var robotSession = MahuaRobotManager.Instance.CreateSession())
                {
                    var lifetimeScope = robotSession.LifetimeScope;
                    var center        = lifetimeScope.Resolve <ICommandCenter>();
                    var cmdType       = GetMahuaType(cmdTypeFullName);
                    var resultType    = GetMahuaType(resultTypeFullName);
                    Func <object, object[], object> invoke =
                        _commandCenterHandleWithResultMethod.MakeGenericMethod(cmdType, resultType).Invoke;
                    var handler = WithResultHandlers
                                  .GetOrAdd(cmdType, invoke);
                    var re     = handler(center, new[] { GlobalCache.CrossDoaminSerializer.Deserialize(cmd, cmdType) });
                    var rejson = GlobalCache.CrossDoaminSerializer.Serialize(re, resultType);
                    WriteDiagnostics(() => rejson);
                    return(rejson);
                }
            }
        }
 public byte[] Handle(byte[] cmd, string cmdTypeFullName, string resultTypeFullName)
 {
     WriteDiagnostics(() => cmd);
     using (var beginLifetimeScope = _container.BeginLifetimeScope())
     {
         SetContainer(beginLifetimeScope);
         var center     = beginLifetimeScope.Resolve <ICommandCenter>();
         var cmdType    = GetMahuaType(cmdTypeFullName);
         var resultType = GetMahuaType(resultTypeFullName);
         Func <object, object[], object> invoke =
             _commandCenterHandleWithResultMethod.MakeGenericMethod(cmdType, resultType).Invoke;
         var handler = WithResultHandlers
                       .GetOrAdd(cmdType, invoke);
         var re     = handler(center, new[] { GlobalCache.CrossDoaminSerializer.Deserialize(cmd, cmdType) });
         var rejson = GlobalCache.CrossDoaminSerializer.Serialize(re, resultType);
         WriteDiagnostics(() => rejson);
         return(rejson);
     }
 }