如何为所有整数类型制作扩展方法?

时间:2015-11-20 15:14:14

标签: c#

我编写了一个静态扩展方法,该方法作用于int,但我想让它更强大,可以对任何integral value types采取行动,例如ushort或{ {1}}。有没有办法做到这一点,缺少代码重复?

现在我的方法签名看起来像这样:

char

我是否可以将public static class ExtensionMethods { public static T MyCoolMethod<T>(this int value) where T : struct, IConvertible { ... } } 换成一些常用界面,或者使用泛型做其他事情来获取它,以便这种扩展方法可以应用于任何整数类型?

2 个答案:

答案 0 :(得分:2)

不,你不能。您应该编写一些基本方法,并根据特定类型的每个实现调用它。

答案 1 :(得分:1)

不,你不能在编译时这样做;这是因为整数类型没有通用约束。但是,在运行时,您可以检查typeof(T).IsPrimitive是否抛出,否则抛出错误。

如果您的方法违反struct的约束条件,则应考虑将其保留在该约束条件下。