Esempio n. 1
0
        public static void Bind(string dllPath)
        {
            var dir = Path.GetDirectoryName(dllPath);
            DefaultAssemblyResolver resolver = new DefaultAssemblyResolver();

            resolver.AddSearchDirectory(dir);
            ReaderParameters parameters = new ReaderParameters()
            {
                AssemblyResolver = resolver,
                ReadSymbols      = false,
            };

            ModuleDefinition module = ModuleDefinition.ReadModule(dllPath, parameters);

            moduleSet.Add(module);

            var moduleTypes = new HashSet <TypeReference>(module.Types);

            foreach (TypeDefinition type in moduleTypes)
            {
                //Utils.Log(type.FullName);
                if (!CUtils.Filter(type))
                {
                    Utils.Log("ignor type:" + type.FullName);
                    continue;
                }

                foreach (var method in type.Methods)
                {
                    if (CUtils.IsIcall(method))
                    {
                        if (!CUtils.Filter(method))
                        {
                            Utils.Log("ignor icall:" + method.FullName);
                            continue;
                        }

                        ICallGenerater.AddMethod(method);
                    }
                    else if (CUtils.IsEventCallback(method) && !method.IsConstructor)
                    {
                        if (!CUtils.Filter(method))
                        {
                            Utils.Log("ignor event:" + method.FullName);
                            continue;
                        }

                        EventGenerater.AddMethod(method);
                    }
                }
            }
        }
Esempio n. 2
0
        public static void End()
        {
            EventGenerater.Gen();
            ICallGenerater.Gen();
            ClassCacheGenerater.Gen();

            foreach (var m in moduleSet)
            {
                m.Dispose();
            }

            moduleSet.Clear();
        }