/// <summary> Evaluates 'new List<T>(iEnumerableValue)' in the debuggee. </summary> public static Value CreateListFromIEnumerable(ParameterizedType ienumerableType, Value iEnumerableValue) { var ilistDef = ienumerableType.Compilation.FindType(typeof(List <>)).GetDefinition(); var ilistType = new ParameterizedType(ilistDef, ienumerableType.TypeArguments); var ctors = ilistType.GetConstructors(m => m.Parameters.Count == 1); var ctor = ctors.Single(m => m.Parameters[0].Type.IsKnownType(KnownTypeCode.IEnumerableOfT)); return(Eval.NewObject(WindowsDebugger.EvalThread, ctor, new Value[] { iEnumerableValue })); }
/// <inheritdoc/> public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) { List <Value> args = new List <Value>(); foreach (object arg in parameters) { args.Add((Value)arg); } if (this.IsSpecialName && this.Name == ".ctor") { if (obj != null) { throw new GetValueException("'obj' must be null for constructor call"); } return(Eval.NewObject(this, args.ToArray())); } else { return(Eval.InvokeMethod(this, (Value)obj, args.ToArray())); } }