报告类型参数错误的最佳实践是什么?

4
有没有.NET中关于报告泛型方法无效类型参数的特定最佳实践或其他建议?
(具体例子:我有一个签名为)
public static T GetRoles<T> (this WindowsIdentity id) where T: struct

我随后对T进行一些反思,以确保它既是枚举类型,又是正确的枚举类型,因为这不是我可以在where子句中使用的约束条件。
对于大多数参数错误,我会采取显而易见的做法,使用适当的参数名称和消息抛出一个ArgumentException异常,但由于类型参数不是常规参数,尝试抛出new ArgumentException("oops", "T")会导致代码分析器抱怨参数名称不是参数。当然,如果没有更好的方法,这并不会阻止我这样做,但如果在这个领域有指定或推荐的做法,我想知道它是什么。

(虽然这不是一项正式的做法,但我当然对你们各自的解决方案和理由感兴趣。) - Cerebrate
4
在你提到的具体情况下,值得调查一下无限制旋律库。 - Paul Phillips
最佳的异常类型用于无效的泛型类型参数是什么? - knaki02
@PaulPhillips - 哦哦,这很聪明。我还有其他情况要处理,但是运行汇编代码通过后处理器并不那么吸引人,遗憾的是,但知道它的存在很好。 - Cerebrate
@knaki02 - 谢谢。看来事情从那时起并没有改变,我也会定义自己的TypeArgumentException。 - Cerebrate
1个回答

1

通过检查可转换接口,可以充分地将其限制为枚举:

where T : struct, IConvertible

这应该能为您节省一些反思工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接