Exemplo n.º 1
0
 private FieldSetter([NotNull] IEnumerable <Assignment> assignments,
                     FindFieldCache findFieldCache = null)
 {
     _assignments    = assignments.ToArray();
     _values         = new object[_assignments.Length];
     _findFieldCache = findFieldCache ?? new FindFieldCache();
     _stack          = new Stack <object>();
     _environment    = new StandardEnvironment();
     _text           = null;
 }
Exemplo n.º 2
0
        private ImplicitValue(
            [NotNull] ExpressionEvaluator evaluator, bool isMissing,
            string name = null, FindFieldCache findFieldCache = null)
        {
            Name           = name;
            IsMissing      = isMissing;
            FindFieldCache = findFieldCache;

            _evaluator   = evaluator;
            _stack       = new Stack <object>();
            _environment = new StandardEnvironment();
        }
Exemplo n.º 3
0
        /// <summary>
        /// An implicit value for the given <paramref name="expression"/>.
        /// If <paramref name="expression"/> is missing (<c>null</c> or empty),
        /// the implicit value will always evaluate to <c>null</c>.
        /// The <paramref name="name"/>, if present, serves as a prefix
        /// in exception messages.
        /// </summary>
        public static ImplicitValue Create(
            [CanBeNull] string expression, string name = null,
            FindFieldCache findFieldCache = null)
        {
            expression = StringUtils.Trim(expression);

            try
            {
                if (string.IsNullOrEmpty(expression))
                {
                    var evaluator = ExpressionEvaluator.CreateConstant(null);
                    return(new ImplicitValue(evaluator, true, name, findFieldCache));
                }
                else
                {
                    var evaluator = ExpressionEvaluator.Create(expression);
                    return(new ImplicitValue(evaluator, false, name, findFieldCache));
                }
            }
            catch (Exception ex)
            {
                throw Error($"Invalid expression: {ex.Message}", name);
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Create a <see cref="FieldSetter"/> instance.
 /// </summary>
 /// <param name="text">The field assignments; syntax: name = expr { ; name = expr }</param>
 /// <param name="findFieldCache">A cache for field index lookups (optional)</param>
 /// <returns>A <see cref="FieldSetter"/> instance</returns>
 public static FieldSetter Create([CanBeNull] string text,
                                  FindFieldCache findFieldCache = null)
 {
     return(new FieldSetter(Parse(text ?? string.Empty), findFieldCache));
 }