コード例 #1
0
        private void GenerateHandlers()
        {
            var module = ReadModule();

            var assembly = Assembly.LoadFrom(_oldName);
            var models   = DbEntry.GetAllModels(assembly);

            if (models.Count <= 0)
            {
                Console.WriteLine("Can not find any model to generate handler !");
            }

            var handler = new KnownTypesHandler(module);

            foreach (var type in models)
            {
                Program.ModelClass = type.FullName;
                if (Program.ModelClass != null)
                {
                    var model     = module.GetType(Program.ModelClass.Replace('+', '/'));
                    var generator = new ModelHandlerGenerator(type, model, handler);
                    var mh        = generator.Generate();
                    module.Types.Add(mh);

                    var mhg = new MemberHandlerGenerator(type, model, handler);
                    mhg.Generate(module);

                    new ModelRelationFixer(type, model).Process();
                }
            }

            module.CustomAttributes.Add(handler.GetAssemblyProcessed());

            WriteAssembly(module, _name);
        }
コード例 #2
0
        public static void EnumTypes(string fileName, bool needStrongName, Func <Type, bool> callback)
        {
            Assembly dll = Assembly.LoadFile(fileName);

            if (needStrongName)
            {
                if (dll.FullName.EndsWith(", PublicKeyToken=null"))
                {
                    throw new DataException("The assembly should have strong name.");
                }
            }

            var ts = DbEntry.GetAllModels(dll);

            foreach (Type t in ts)
            {
                if (!callback(t))
                {
                    break;
                }
            }
        }