private static void SetValue(DotExpression expression, object value, IContext context) { if (expression.Arguments != null) { throw new InvalidOperationException("Invalid left value"); } object obj = ResolveToObject(expression.Expression, context); ObjectUtilities.SetValue(obj, expression.Name, value); }
private static IDictionary ResolveToDictionary(DotExpression expression, IContext context) { object obj = ResolveToObject(expression.Expression, context); if (obj is DynamicObject) { DynamicObject dynobj = (DynamicObject)obj; obj = dynobj.GetValue(expression.Name); if (obj == null || obj == Undefined.Instance) { obj = new Hashtable(); dynobj.SetValue(expression.Name, obj); } return((IDictionary)obj); } return((IDictionary)ObjectUtilities.GetValue(obj, expression.Name)); }
private static IList ResolveToList(DotExpression expression, IContext context) { object obj = ResolveToObject(expression.Expression, context); if (obj is DynamicObject) { DynamicObject dynobj = (DynamicObject)obj; obj = dynobj.GetValue(expression.Name); if (obj == null || obj == Undefined.Instance) { obj = new ArrayList(); dynobj.SetValue(expression.Name, obj); } return((IList)obj); } return((IList)ObjectUtilities.GetValue(obj, expression.Name)); }