Ejemplo n.º 1
0
        /// <summary>Registers a global constant.</summary>
        /// <exception cref="Exception">Throws an exception if the global constant name already exists.</exception>
        /// <param name="name">The global constant name.</param>
        /// <param name="value">The global constant value.</param>
        /// <returns>A Fluent EvalContext.</returns>
        public EvalContext RegisterGlobalConstant(string name, object value)
        {
            if (!AliasGlobalConstants.TryAdd(name, Expression.Constant(value)))
            {
                throw new Exception(string.Format(ExceptionMessage.Unexpected_AliasRegistered, name));
            }

            return(this);
        }
        /// <summary>Unregisters a global constant.</summary>
        /// <param name="aliases">The global constant name.</param>
        /// <returns>An Fluent EvalContext.</returns>
        public EvalContext UnregisterGlobalConstant(params string[] aliases)
        {
            foreach (var alias in aliases)
            {
                ConstantExpression value;
                AliasGlobalConstants.TryRemove(alias, out value);
            }

            return(this);
        }
        /// <summary>Unregisters all kind of alias (Extension Methods, Names, Static Members, Types and Values).</summary>
        /// <returns>An Fluent EvalContext.</returns>
        public EvalContext UnregisterAll()
        {
            AliasExtensionMethods.Clear();
            AliasGlobalConstants.Clear();
            AliasGlobalVariables.Clear();
            AliasNames.Clear();
            AliasStaticMembers.Clear();
            AliasTypes.Clear();

            return(this);
        }