protected override Completion ExecuteImpl(ExecutionEnvironment enviroment) { try { foreach (var c in ObjectType.GetConstructors()) { if ((Parameters.Count > 0 && c.GetParameters().Length == Parameters.Count) || (Parameters.Count == 0 && (c.GetParameters() == null || c.GetParameters().Length == 0))) { object[] ps = new object[Parameters.Count]; for (int i = 0; i < Parameters.Count; i++) { if (Parameters[i] == null) { return(Completion.Exception(Properties.Language.ParameterNullException, this)); } try { var p = Parameters[i].Execute(enviroment); if (p.Type != CompletionType.Value) { return(p); } ps[i] = p.ReturnValue; } catch (Exception e) { return(Completion.Exception(e.Message, Parameters[i])); } } object value = c.Invoke(ps); return(new Completion(value)); } } }catch (Exception ex) { return(Completion.Exception(ex.Message, this)); } return(Completion.Exception(Properties.Language.FailedNewException, this)); }