【发布时间】:2012-12-26 04:16:45
【问题描述】:
对于在 .NET 中报告泛型方法的无效类型参数是否有特定的最佳实践或其他建议?
(具体例子:我有一个带有签名的方法
public static T GetRoles<T> (this WindowsIdentity id) where T: struct
然后我对 T 进行一些思考,以确保它既是 (a) 枚举,又是 (b) 正确类型的枚举,因为这不是我可以在 where 子句中使用的约束。)
对于大多数参数错误,我会做明显的事情并使用适当的参数名称和消息抛出 ArgumentException,除非因为类型参数不是常规参数,所以尝试抛出 new ArgumentException ("oops ", "T") 让代码分析器抱怨参数名称不是一个。当然,如果没有更好的方法,这不会阻止我,但是如果在这方面有指定或推荐的做法,我想知道它是什么。
【问题讨论】:
-
(当然,即使这不是正式的做法,我仍然对你们的各种解决方案/推理感兴趣。)
-
在您提到的具体情况下,可能值得研究 unconstrained melody 库。
-
回答here
-
@PaulPhillips - 哦,这很聪明。我还有其他一些情况要处理,但没有那么多通过后处理器运行程序集的呼吁,唉,但很高兴知道它存在。
-
@knaki02 - 谢谢。猜猜从那以后事情没有改变,我还将定义自己的 TypeArgumentException。