public CompiledExpressionInvoker(ITextExpression expression, bool isReference, CodeActivityMetadata metadata) { if (metadata == null) { throw FxTrace.Exception.ArgumentNull(nameof(metadata)); } this.expressionId = -1; this.textExpression = expression ?? throw FxTrace.Exception.ArgumentNull(nameof(expression)); this.expressionActivity = expression as Activity; this.isReference = isReference; this.locationReferences = new List <LocationReference>(); this.metadata = metadata; this.accessor = CodeActivityPublicEnvironmentAccessor.Create(this.metadata); if (this.expressionActivity == null) { throw FxTrace.Exception.Argument(nameof(expression), SR.ITextExpressionParameterMustBeActivity); } var resultActivity = this.expressionActivity as ActivityWithResult; this.metadataRoot = metadata.Environment.Root; this.ProcessLocationReferences(); }
protected override void CacheMetadata(CodeActivityMetadata metadata) { CodeActivityPublicEnvironmentAccessor publicAccessor = CodeActivityPublicEnvironmentAccessor.Create(metadata); // We need to rewrite the tree. Expression newTree; if (ExpressionUtilities.TryRewriteLambdaExpression(_locationExpression, out newTree, publicAccessor, true)) { _rewrittenTree = (Expression <Func <ActivityContext, T> >)newTree; } else { _rewrittenTree = _locationExpression; } // inspect the expressionTree to see if it is a valid location expression(L-value) string extraErrorMessage = null; if (!ExpressionUtilities.IsLocation(_rewrittenTree, typeof(T), out extraErrorMessage)) { string errorMessage = SR.InvalidLValueExpression; if (extraErrorMessage != null) { errorMessage += ":" + extraErrorMessage; } metadata.AddValidationError(errorMessage); } }
protected override void CacheMetadata(CodeActivityMetadata metadata) { CodeActivityPublicEnvironmentAccessor publicAccessor = CodeActivityPublicEnvironmentAccessor.Create(metadata); // We need to rewrite the tree. if (ExpressionUtilities.TryRewriteLambdaExpression(this.lambdaValue, out Expression newTree, publicAccessor)) { this.rewrittenTree = (Expression <Func <ActivityContext, TResult> >)newTree; }
protected override void CacheMetadata(CodeActivityMetadata metadata) { var publicAccessor = CodeActivityPublicEnvironmentAccessor.Create(metadata); // We need to rewrite the tree. if (ExpressionUtilities.TryRewriteLambdaExpression(this.locationExpression, out var newTree, publicAccessor, true)) { this.rewrittenTree = (Expression <Func <ActivityContext, T> >)newTree; }
protected override void CacheMetadata(CodeActivityMetadata metadata) { expressionTree = null; invoker = new CompiledExpressionInvoker(this, true, metadata); if (metadata.Environment.CompileExpressions) { return; } string validationError; // If ICER is not implemented that means we haven't been compiled var publicAccessor = CodeActivityPublicEnvironmentAccessor.Create(metadata); expressionTree = CompileLocationExpression(publicAccessor, out validationError); if (validationError != null) { metadata.AddValidationError(validationError); } }
protected override void CacheMetadata(CodeActivityMetadata metadata) { expressionTree = null; invoker = new CompiledExpressionInvoker(this, false, metadata); if (metadata.Environment.CompileExpressions) { return; } // If ICER is not implemented that means we haven't been compiled var publicAccessor = CodeActivityPublicEnvironmentAccessor.Create(metadata); try { expressionTree = VisualBasicHelper.Compile <TResult>(this.ExpressionText, publicAccessor, false); } catch (SourceExpressionException e) { metadata.AddValidationError(e.Message); } }