假设我们有一个带有这样签名的泛型方法:
T Obfuscate<T>(T value) where T : IConvertible
我将类型约束设置为,IConvertible
以便此方法可以消化简单的值类型以及字符串。让我们暂时忘记枚举也可以提供......
我想避免这种会检查实际参数类型以执行正确处理的实现。
// Please no GOD METHODS
public T Obfuscate<T>(T value)
where T : IConvertible
{
if (value is int)
{
...
}
if (value is string)
{
...
}
}
这肯定有点工厂方法的味道,它必须调用特定的实现提供者,但这仍然需要类型检查。
对于这种情况,您建议最好(希望是通用方法)是什么?
为什么是通用方法?
我决定有一个通用方法,所以它总是返回正确的类型,而无需在调用代码中强制转换方法返回。