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); }