Maison >développement back-end >C++ >Comment les énumérations peuvent-elles être générées dynamiquement à partir d'une table de recherche de base de données ?
Générer dynamiquement des énumérations à partir de la table de recherche de base de données
Comment générer automatiquement des énumérations basées sur des valeurs stockées dans une table de recherche de base de données et garder les énumérations synchronisées avec la base de données sans modifier manuellement le code ? C'est une question courante.
Solutions de génération de code
Bien qu'elle ne puisse pas être entièrement automatisée, la génération de code peut apporter une solution. La génération automatique d'énumérations peut être réalisée en créant un projet distinct appelé « EnumeratedTypes » dans la solution. Ce projet agit comme une application console, récupérant les valeurs de la base de données, construisant des énumérations à partir de ces valeurs et les enregistrant dans un assembly séparé.
Dans ce projet de génération de code, utilisez le code suivant pour définir et remplir des énumérations dynamiques :
<code class="language-csharp">// 创建动态程序集 AssemblyName name = new AssemblyName("MyEnums"); AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndSave); // 定义动态模块 ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(name.Name, name.Name + ".dll"); // 定义公共枚举 EnumBuilder myEnum = moduleBuilder.DefineEnum("EnumeratedTypes.MyEnum", TypeAttributes.Public, typeof(int)); // 从数据库检索数据 MyDataAdapter someAdapter = new MyDataAdapter(); MyDataSet.MyDataTable myData = myDataAdapter.GetMyData(); // 定义枚举文字 foreach (MyDataSet.MyDataRow row in myData.Rows) { myEnum.DefineLiteral(row.Name, row.Key); } // 创建枚举并保存程序集 myEnum.CreateType(); assemblyBuilder.Save(name.Name + ".dll");</code>
D'autres projets de la solution peuvent référencer cet assembly généré, accédant ainsi aux énumérations dynamiques et fournissant le support IntelliSense.
Automatisation des événements post-construction
Pour assurer la génération automatique des énumérations, le projet "EnumeratedTypes" peut ajouter un événement post-build. Cet événement s'exécutera pendant le processus de construction et générera le fichier "MyEnums.dll".
Autres notes
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!