public void InvalidArgumentIndex() { Expression key = Expression.Constant("Key"); Expression value = Expression.Constant(42); ElementInit init = Expression.ElementInit(typeof(Dictionary <string, int>).GetMethod("Add"), key, value); AssertExtensions.Throws <ArgumentOutOfRangeException>("index", () => init.GetArgument(-1)); AssertExtensions.Throws <ArgumentOutOfRangeException>("index", () => init.GetArgument(2)); AssertExtensions.Throws <ArgumentOutOfRangeException>("index", () => init.GetArgument(3)); AssertExtensions.Throws <ArgumentOutOfRangeException>("index", () => init.GetArgument(int.MaxValue)); }
public void CanAccessArguments() { Expression key = Expression.Constant("Key"); Expression value = Expression.Constant(42); ElementInit init = Expression.ElementInit(typeof(Dictionary <string, int>).GetMethod("Add"), key, value); Assert.Equal(2, init.ArgumentCount); Assert.Same(key, init.GetArgument(0)); Assert.Same(value, init.GetArgument(1)); Assert.Equal(new[] { key, value }, init.Arguments); }
protected override ElementInit VisitElementInit(ElementInit initializer) { Out(initializer.AddMethod.ToString()); string sep = ", "; Out('('); for (int i = 0, n = initializer.ArgumentCount(); i < n; i++) { if (i > 0) { Out(sep); } Visit(initializer.GetArgument(i)); } Out(')'); return(initializer); }