コード例 #1
0
        internal Assembly Generate()
        {
            if (module.GetType(typeName) != null)
            {
                return(module.Assembly);
            }

            String ifaceName = typeName.Replace("Mozilla.XPCOM.Interfaces.", "");

            TypeInfo.MethodDescriptor[] descs =
                TypeInfo.GetMethodData(ifaceName);

            ushort inheritedMethodCount;
            String parentName = TypeInfo.GetParentInfo(ifaceName,
                                                       out inheritedMethodCount);
            Type parentType;

            if (parentName != null)
            {
                parentName = "Mozilla.XPCOM.Interfaces." + parentName;
                parentType = module.Assembly.GetType(parentName);
                if (parentType == null)
                {
                    InterfaceGenerator gen = new InterfaceGenerator(parentName);
                    parentType = gen.Generate().GetType(parentName);
                }
            }
            else
            {
                parentType = typeof(object);
            }

            tb = module.DefineType(typeName,
                                   TypeAttributes.Public | TypeAttributes.Interface,
                                   parentType);

            for (int i = inheritedMethodCount; i < descs.Length; i++)
            {
                if (descs[i] != null)
                {
                    GenerateInterfaceMethod(descs[i]);
                }
            }

            tb.CreateType();

            return(module.Assembly);
        }
コード例 #2
0
ファイル: components.cs プロジェクト: roytam1/fx3
        static Assembly TypeResolve(object sender, ResolveEventArgs args)
        {
            if (args.Name.StartsWith("Mozilla.XPCOM.Proxies."))
            {
                ProxyGenerator gen = new ProxyGenerator(args.Name);
                return(gen.Generate());
            }

#if NOTYET
            if (args.Name.StartsWith("Mozilla.XPCOM.Interfaces."))
            {
                InterfaceGenerator gen = new InterfaceGenerator(args.Name);
                return(gen.Generate());
            }
#endif

            return(null);
        }
コード例 #3
0
ファイル: interface-generator.cs プロジェクト: nfan/Jaxer
        internal Assembly Generate()
        {
            if (module.GetType(typeName) != null)
            return module.Assembly;

            String ifaceName = typeName.Replace("Mozilla.XPCOM.Interfaces.", "");
            TypeInfo.MethodDescriptor[] descs =
            TypeInfo.GetMethodData(ifaceName);

            ushort inheritedMethodCount;
            String parentName = TypeInfo.GetParentInfo(ifaceName,
                                                   out inheritedMethodCount);
            Type parentType;

            if (parentName != null) {
            parentName = "Mozilla.XPCOM.Interfaces." + parentName;
            parentType = module.Assembly.GetType(parentName);
            if (parentType == null) {
                InterfaceGenerator gen = new InterfaceGenerator(parentName);
                parentType = gen.Generate().GetType(parentName);
            }
            } else {
            parentType = typeof(object);
            }

            tb = module.DefineType(typeName,
                               TypeAttributes.Public | TypeAttributes.Interface,
                               parentType);

            for (int i = inheritedMethodCount; i < descs.Length; i++) {
            if (descs[i] != null)
                GenerateInterfaceMethod(descs[i]);
            }

            tb.CreateType();

            return module.Assembly;
        }
コード例 #4
0
ファイル: components.cs プロジェクト: nfan/Jaxer
        static Assembly TypeResolve(object sender, ResolveEventArgs args)
        {
            if (args.Name.StartsWith("Mozilla.XPCOM.Proxies.")) {
            ProxyGenerator gen = new ProxyGenerator(args.Name);
            return gen.Generate();
            }

            #if NOTYET
            if (args.Name.StartsWith("Mozilla.XPCOM.Interfaces.")) {
            InterfaceGenerator gen = new InterfaceGenerator(args.Name);
            return gen.Generate();
            }
            #endif

            return null;
        }