如果枚举类型具有不同的自定义属性,则需要自定义枚举属性

时间:2016-11-18 22:12:55

标签: c# .net custom-attributes

标题总结了它。假设我定义了一个自定义属性IsModule。它用于我用来加载所有模块的枚举类型。

I.e assembly.GetCustomAttributes(typeof(IsModule),true)

一旦我拥有了具有该属性的所有枚举,我迭代每个枚举并读取不同的自定义属性ModuleData,以便我可以将其插入数据库。

我想要做的是通过在每个枚举值上要求ModuleData属性来使这个未来的开发人员证明,如果该类型上存在IsModule属性。

2 个答案:

答案 0 :(得分:2)

没有即时语言功能可以提供帮助。但是,这里有三个备选方案:

  1. 制作一个Visual Studio(或ReSharper)加载项,用于在编辑期间检查;
  2. 制定FXCop规则,检查何时运行静态代码分析;
  3. 进行单元测试,枚举所有组件并进行检查。
  4. 请注意,在单元测试(选项3)的情况下,您需要以确保加载程序的所有程序集的方式运行它。

答案 1 :(得分:1)

您可以使用称为模块初始化程序(或模块构造函数)的东西来扫描模块以查找与所述条件匹配的枚举,并抛出一些异常。

问题是虽然IL支持它,但c#本身并不是这样你需要一些" help" :)

可以在这里找到一种可能的实现方式:

https://github.com/fody/moduleinit