Générer automatiquement des énumérations C# à partir des tables de recherche de base de données
Contexte :
Dans les applications d'entreprise, les valeurs de recherche couramment utilisées sont souvent stockées dans des tables de base de données pour une maintenance plus facile. Lorsque vous travaillez avec de telles données dans du code C#, vous souhaiterez peut-être définir une énumération qui reflète les valeurs du tableau pour la sécurité des types et la clarté du code. Cependant, la maintenance manuelle de cette énumération peut devenir fastidieuse lorsque des modifications sont apportées à la table de recherche.
Génération d'énumération dynamique :
Pour relever ce défi, les énumérations doivent être automatiquement créées et mises à jour en fonction des valeurs des tables de recherche de la base de données. Ceci peut être réalisé grâce à la génération de code, même si une solution entièrement automatisée est préférable.
Méthode de génération de code :
Une approche efficace consiste à créer un projet distinct pour générer des énumérations. Ce projet contiendra du code qui extrait les valeurs de la base de données, construit la définition de l'énumération et la compile dans un assembly.
Exemple de code :
<code class="language-csharp">// 基于数据库值动态定义枚举 AssemblyName assemblyName = new AssemblyName("MyEnums"); AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name + ".dll"); EnumBuilder myEnum = moduleBuilder.DefineEnum("MyEnum", TypeAttributes.Public, typeof(int)); // 从数据库检索数据 MyDataAdapter dataAdapter = new MyDataAdapter(); MyDataSet.MyDataTable myData = dataAdapter.GetMyData(); // 基于数据库行定义枚举文字 foreach (MyDataSet.MyDataRow row in myData.Rows) { myEnum.DefineLiteral(row.Name, row.Key); } // 创建枚举类型 myEnum.CreateType(); // 保存程序集 assemblyBuilder.Save(assemblyName.Name + ".dll");</code>
Avantages de la génération de code :
En générant dynamiquement l'énumération, vous vous assurez qu'elle reste synchronisée avec la table de recherche de la base de données. Cela élimine le besoin de maintenance manuelle, réduit la duplication de code et offre une meilleure flexibilité.
Intégration avec d'autres projets :
Une fois qu'un assembly enum est généré, il peut être référencé par d'autres projets, permettant aux développeurs de travailler avec des valeurs enum définies dynamiquement et d'obtenir le support IntelliSense.
Pour les événements post-build générés automatiquement :
Pour automatiser entièrement ce processus, vous pouvez ajouter un événement post-build à votre projet de build d'énumération qui déclenche le processus de build après chaque build, garantissant ainsi que l'énumération est toujours à jour.
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!