Пример #1
0
 /// <summary>
 ///     获取动作的状态
 /// </summary>
 /// <param name="action"></param>
 /// <returns></returns>
 public object GetActionCorrelationState(IU9BehaviorAction action)
 {
     if (!_actionCorrelationStateDict.ContainsKey(action))
     {
         throw new Exception("action correlationState does not exist");
     }
     return(_actionCorrelationStateDict[action]);
 }
Пример #2
0
 /// <summary>
 ///     添加动作
 /// </summary>
 /// <param name="action"></param>
 /// <param name="correlationState"></param>
 public void AddAction(IU9BehaviorAction action, object correlationState)
 {
     if (_actions.Contains(action))
     {
         throw new Exception("action cannot be repeated");
     }
     _actions.Add(action);
     _actionCorrelationStateDict.Add(action, correlationState);
 }
Пример #3
0
        public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
        {
            if (WebOperationContext.Current == null)
            {
                throw new WebFaultException(HttpStatusCode.BadRequest);
            }
            U9ActionCorrelationState correlationState = new U9ActionCorrelationState();
            U9ActionSectionGroup     group            = U9ActionSectionGroup.GetConfig();

            for (int i = 0; i < group.Actions.Count; i++)
            {
                U9ActionSection   section = group.Actions[i];
                IU9BehaviorAction action  = Activator.CreateInstance(section.LoadType) as IU9BehaviorAction;
                if (action == null)
                {
                    throw new Exception("u9Action must inherit IU9BehaviorAction");
                }
                object result = action.BeforeDo(ref request, channel, instanceContext, correlationState);
                correlationState.AddAction(action, result);
            }
            return(correlationState);
        }
Пример #4
0
        public void BeforeSendReply(ref Message reply, object correlationState)
        {
            U9ActionCorrelationState u9ActionCorrelationState = correlationState as U9ActionCorrelationState;

            if (u9ActionCorrelationState == null)
            {
                return;
            }
            for (int i = u9ActionCorrelationState.Actions.Count - 1; i >= 0; i--)
            {
                try
                {
                    IU9BehaviorAction action          = u9ActionCorrelationState.Actions[i];
                    object            beforeReturnObj = u9ActionCorrelationState.GetActionCorrelationState(action);
                    action.AfterDo(ref reply, beforeReturnObj, u9ActionCorrelationState);
                }
                catch (Exception ex)
                {
                    Logger.Debug("执行U9 Action后事件失败:{0}", i);
                    Logger.Debug(ex);
                }
            }
        }