public NativeMethodOverload(ICollection<MethodInfo> methods , JsObject prototype, IGlobal global) : base(prototype) { if (global == null) throw new ArgumentNullException("global"); m_marshaller = global.Marshaller; foreach (MethodInfo info in methods) { Name = info.Name; break; } foreach (var method in methods) { if (method.IsGenericMethodDefinition) m_generics.AddLast(method); else if (! method.ContainsGenericParameters) m_methods.AddLast(method); } m_overloads = new NativeOverloadImpl<MethodInfo, JsMethodImpl>( m_marshaller, new NativeOverloadImpl<MethodInfo, JsMethodImpl>.GetMembersDelegate(this.GetMembers), new NativeOverloadImpl<MethodInfo, JsMethodImpl>.WrapMmemberDelegate(this.WrapMember) ); }
public NativeIndexer(Marshaller marshaller, MethodInfo[] getters, MethodInfo[] setters) { m_getOverload = new NativeOverloadImpl<MethodInfo, JsIndexerGetter>( marshaller, delegate(Type[] genericArgs, int Length) { return Array.FindAll<MethodInfo>(getters, mi => mi.GetParameters().Length == Length); }, new NativeOverloadImpl<MethodInfo, JsIndexerGetter>.WrapMmemberDelegate(marshaller.WrapIndexerGetter) ); m_setOverload = new NativeOverloadImpl<MethodInfo, JsIndexerSetter>( marshaller, delegate(Type[] genericArgs, int Length) { return Array.FindAll<MethodInfo>(setters, mi => mi.GetParameters().Length == Length); }, new NativeOverloadImpl<MethodInfo,JsIndexerSetter>.WrapMmemberDelegate(marshaller.WrapIndexerSetter) ); }
public NativeMethodOverload(JsGlobal global, IEnumerable<MethodInfo> methods) { if (global == null) throw new ArgumentNullException("global"); if (methods == null) throw new ArgumentNullException("methods"); foreach (var method in methods) { if (method.IsGenericMethodDefinition) _generics.Add(method); else if (!method.ContainsGenericParameters) _methods.Add(method); } _overloads = new NativeOverloadImpl<MethodInfo, JsFunction>( global, GetMembers, ProxyHelper.WrapMethod ); }
public NativePropertyStore(JsObject owner, MethodInfo[] getters, MethodInfo[] setters) : base((DictionaryPropertyStore)owner.PropertyStore) { if (getters == null) throw new ArgumentNullException("getters"); if (setters == null) throw new ArgumentNullException("setters"); _global = owner.Global; _getOverload = new NativeOverloadImpl<MethodInfo, WrappedIndexerGetter>( _global, (genericArgs, length) => Array.FindAll(getters, mi => mi.GetParameters().Length == length), ProxyHelper.WrapIndexerGetter ); _setOverload = new NativeOverloadImpl<MethodInfo, WrappedIndexerSetter>( _global, (genericArgs, length) => Array.FindAll(setters, mi => mi.GetParameters().Length == length), ProxyHelper.WrapIndexerSetter ); }