public override IodineObject Invoke (VirtualMachine vm, IodineObject[] arguments) { int i = 0; var suitableOverload = type.GetConstructors ().Where (p => p.GetParameters ().Length == arguments.Length). FirstOrDefault (); Type[] types = suitableOverload.GetParameters ().Select (p => p.ParameterType).ToArray (); object[] objects = arguments.Select (p => typeRegistry.ConvertToNativeObject (p, types [i++])).ToArray (); return ObjectWrapper.CreateFromObject (typeRegistry, this, suitableOverload.Invoke (objects)); }
private IodineObject join (VirtualMachine vm, IodineObject self, IodineObject[] args) { string[] paths = args.Select (p => p.ToString ()).ToArray (); return new IodineString (Path.Combine (paths)); }