2016-11-18 133 views
0

標題將其總結。假設我定義了一個自定義屬性IsModule。它用於我用來加載所有模塊的枚舉類型。如果枚舉類型具有不同的自定義屬性,則需要自定義枚舉屬性

即assembly.GetCustomAttributes(typeof運算(IsModule),真)

一旦我有有屬性的所有枚舉,我遍歷每個枚舉和讀取不同的自定義屬性ModuleData,這樣我可以將它插入到數據庫。

我想要做的是通過要求ModuleData屬性覆蓋每個枚舉值(如果該類型上存在IsModule屬性)來進行開發人員驗證。

回答

2

有沒有直接的語言功能來幫助。但是,這裏有三個備選選項:

  1. 使Visual Studio(或ReSharper)加載項在編輯期間檢查此操作;
  2. 制定FXCop規則,該規則將檢查何時運行靜態代碼分析;
  3. 做一個單元測試,將枚舉所有程序集並進行檢查。

請注意,在單元測試(選項3)的情況下,您需要以確保程序的所有程序集都已加載的方式運行它。

+1

單元測試是一個好主意 –

+0

#1有我的興趣達到頂峯。我可以爲開發人員編寫一個完整的執法庫。從來沒有做過這個,你有一個好的資源開始? – JDBennett

+0

@JDBennett檢查SO:http://stackoverflow.com/search?q=%5Bfxcop%5D+custom+rule ;-) –

1

您可以使用稱爲模塊初始值設定項(或模塊構造函數)的東西來掃描您的模塊是否符合所述條件的枚舉並拋出一些異常。

的事情是,當IL支持的話,C#本身並沒有,所以你需要一些「幫助」 :)

一種可能的實現可以在這裏找到:

https://github.com/fody/moduleinit