报告类型参数中的错误的最佳做法?

时间:2012-12-26 04:16:45

标签: c# .net generics

在.NET中报告泛型方法的无效类型参数是否有特定的最佳实践或其他建议?

(具体示例:我有一个带签名的方法

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

然后我对T进行一些反思,以确保它既是(a)枚举,又是(b)正确的枚举,因为这不是我可以在where子句中使用的约束。)

对于大多数参数错误,我会做一件明显的事情并抛出带有相应参数名称和消息的ArgumentException,除非因为类型参数不是常规参数,所以尝试抛出 new ArgumentException(“oops” “,”T“)使代码分析器抱怨参数名称不是一个。当然,如果没有更好的方法,这不会阻止我,但如果在这方面有指定或推荐的做法,我想知道它是什么。

1 个答案:

答案 0 :(得分:1)

通过检查可转换接口可以充分地完成对枚举的约束:

where T : struct, IConvertible

这可以为你节省一些反思工作。