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))); }
public override IodineObject ConvertFrom(TypeRegistry registry, object obj) { return(ObjectWrapper.CreateFromObject(typeRegistry, classWrapper, obj)); }