我编写了一个静态扩展方法,该方法作用于int
,但我想让它更强大,可以对任何integral value types采取行动,例如ushort
或{ {1}}。有没有办法做到这一点,缺少代码重复?
现在我的方法签名看起来像这样:
char
我是否可以将public static class ExtensionMethods
{
public static T MyCoolMethod<T>(this int value) where T : struct, IConvertible
{
...
}
}
换成一些常用界面,或者使用泛型做其他事情来获取它,以便这种扩展方法可以应用于任何整数类型?
答案 0 :(得分:2)
答案 1 :(得分:1)
不,你不能在编译时这样做;这是因为整数类型没有通用约束。但是,在运行时,您可以检查typeof(T).IsPrimitive
是否抛出,否则抛出错误。
如果您的方法违反struct
的约束条件,则应考虑将其保留在该约束条件下。