private StepControlObserver GetContainer <T>(IStep <T> step)
        {
            if (!Observers.ContainsKey(step))
            {
                lock (LockerCreation)
                {
                    if (!Observers.ContainsKey(step))
                    {
                        var aux = new StepControlObserver(Container);
                        aux.Initial(step.Description());
                        Observers[step] = aux;
                    }
                }
            }

            return(Observers[step]);
        }
Beispiel #2
0
        public IResult Execute(T obj)
        {
            try
            {
                IResult resultCurrent = null;

                try
                {
                    resultCurrent = ExecuteTemplate(obj);
                }
                catch (Exception ex)
                {
                    return(new Result(EnumResultBL.ERROR_UNEXPECTED_EXCEPTION, "STEP::" +
                                      this.GetType().ToString() +
                                      " => " +
                                      Description() +
                                      " :" +
                                      ex.Message));
                }

                if (resultCurrent == null)
                {
                    return(new Result(EnumResultBL.ERROR_BAD_IMPLEMENTATION, this.GetType().ToString()));
                }

                if (resultCurrent.ComputeResult().IsError() || Next == null)
                {
                    return(resultCurrent);
                }

                if (resultCurrent.ComputeResult().IsOk() && IsOkAndFinish)
                {
                    return(resultCurrent);
                }

                return(Next.Execute(obj));
            }
            catch (Exception ex)
            {
                return(new Result(EnumResultBL.ERROR_UNEXPECTED_EXCEPTION, Next?.Description() + " :" + ex.Message));
            }
        }