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