Beispiel #1
0
        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)
            );
        }
Beispiel #2
0
 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)
     );
 }
Beispiel #3
0
        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
            );
        }
Beispiel #4
0
        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
            );
        }