Ejemplo n.º 1
0
        public object EvaluateExpression(string expressionString)
        {
            int    num;
            object obj2;

            if (int.TryParse(expressionString, out num))
            {
                return(num);
            }
            LocalInfo info = null;

            if ((this.cachedLocalInfos != null) && this.cachedLocalInfos.TryGetValue(expressionString, out info))
            {
                return(info);
            }
            LocationReferenceEnvironment publicEnvironment = this.activityInstance.Activity.PublicEnvironment;
            ActivityContext context = new ActivityContext(this.activityInstance, null);

            try
            {
                if (!TryEvaluateExpression(expressionString, null, publicEnvironment, context, out obj2))
                {
                    return(System.Activities.SR.DebugInfoCannotEvaluateExpression(expressionString));
                }
            }
            catch (Exception exception)
            {
                if (Fx.IsFatal(exception))
                {
                    throw;
                }
                context.Dispose();
                return(System.Activities.SR.DebugInfoCannotEvaluateExpression(expressionString));
            }
            try
            {
                object obj3;
                if (TryEvaluateExpression(expressionString, obj2.GetType(), publicEnvironment, context, out obj3))
                {
                    LocalInfo info2 = new LocalInfo {
                        Name     = expressionString,
                        Location = obj3 as System.Activities.Location
                    };
                    this.cachedLocalInfos[expressionString] = info2;
                    return(info2);
                }
            }
            catch (Exception exception2)
            {
                if (Fx.IsFatal(exception2))
                {
                    throw;
                }
            }
            finally
            {
                context.Dispose();
            }
            return(obj2);
        }
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         db.Dispose();
     }
     base.Dispose(disposing);
 }