Example #1
0
        /// <summary>
        /// Tries to return a value of <see cref="WorkflowBase.Vars" /> property strong typed.
        /// </summary>
        /// <typeparam name="T">Target type.</typeparam>
        /// <param name="name">The name of the var.</param>
        /// <param name="value">The field where to write the found value to.</param>
        /// <param name="defaultValueProvider">
        /// The logic that produces the default value for <paramref name="name" />
        /// if <paramref name="value" /> does not exist.
        /// </param>
        /// <returns>Var exists or not.</returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="defaultValueProvider" /> is <see langword="null" />.
        /// </exception>
        public bool TryGetVar <T>(IEnumerable <char> name, out T value, Func <string, T> defaultValueProvider)
        {
            if (defaultValueProvider == null)
            {
                throw new ArgumentNullException("defaultValueProvider");
            }

            lock (this.SyncRoot)
            {
                IDictionary <string, object> dict = this.Vars;
                if (dict != null)
                {
                    object foundValue;
                    if (dict.TryGetValue(SimpleWorkflowExecutionContext.ParseVarName(name), out foundValue))
                    {
                        value = GlobalConverter.Current
                                .ChangeType <T>(foundValue);

                        return(true);
                    }
                }
            }

            value = defaultValueProvider(StringHelper.AsString(name));
            return(false);
        }
Example #2
0
        /// <summary>
        /// Gets or sets a value of the variables of that workflow.
        /// </summary>
        /// <param name="name">The name of the var.</param>
        /// <returns>The value of the var.</returns>
        /// <remarks>
        /// The variable names are NOT case sensitive.
        /// </remarks>
        public object this[IEnumerable <char> name]
        {
            get { return(this.Vars[SimpleWorkflowExecutionContext.ParseVarName(name)]); }

            set { this.Vars[SimpleWorkflowExecutionContext.ParseVarName(name)] = value; }
        }