标题总结了它。假设我定义了一个自定义属性IsModule。它用于我用来加载所有模块的枚举类型。
I.e assembly.GetCustomAttributes(typeof(IsModule),true)
一旦我拥有了具有该属性的所有枚举,我迭代每个枚举并读取不同的自定义属性ModuleData,以便我可以将其插入数据库。
我想要做的是通过在每个枚举值上要求ModuleData属性来使这个未来的开发人员证明,如果该类型上存在IsModule属性。
答案 0 :(得分:2)
没有即时语言功能可以提供帮助。但是,这里有三个备选方案:
请注意,在单元测试(选项3)的情况下,您需要以确保加载程序的所有程序集的方式运行它。
答案 1 :(得分:1)
您可以使用称为模块初始化程序(或模块构造函数)的东西来扫描模块以查找与所述条件匹配的枚举,并抛出一些异常。
问题是虽然IL支持它,但c#本身并不是这样你需要一些" help" :)
可以在这里找到一种可能的实现方式: