4

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

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

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

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

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

4

1 回答 1

1

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

where T : struct, IConvertible

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

于 2012-12-26T07:55:47.260 回答