2012-12-26 54 views
3

是否有特定的最佳實踐或其他建議報告.NET中的泛型方法的無效類型參數?報告類型參數錯誤的最佳做法?

(具體例:我與簽名的方法

public static T GetRoles<T> (this WindowsIdentity id) where T: struct 

我然後執行對T一些反射,以確保它是上述(a)的枚舉,和(b)一種權利枚舉的,因爲這不是一個限制,我可以在where子句中使用。)

對於大多數參數錯誤,我會做明顯的事情,並引發ArgumentException用適當的參數名稱和消息,除了因爲類型參數不一個常規的參數,試圖拋出一個新的ArgumentException(「oops」,「T」)使代碼分析器co說明參數名稱,不是其中的一個。如果沒有更好的方法去做,那當然不會阻止我,但是如果在這個領域有特定或推薦的做法,我想知道它是什麼。

+0

(即使這不是一個正式的練習,我仍然對你們的各種解決方案/推理感興趣,當然。) – Cerebrate

+4

在你提到的具體情況中,可能值得研究[不受約束的旋律]( http://code.google.com/p/unconstrained-melody/)庫。 –

+0

回答[這裏](http://stackoverflow.com/questions/1412598/best-exception-for-an-invalid-generic-type-argument) – knaki02

回答

1

約束到一個枚舉可以通過檢查可轉換接口,充分做到:

where T : struct, IConvertible 

這應該爲你節省一些反思工作。

相關問題