我有一个 API,其中包含一些接受类型参数的方法。我现在将它们转换为泛型方法,作为改进 API(更类型安全)的一部分,同时保留非泛型版本以实现向后兼容性。
当前 - 将被淘汰:
public object MyMethod(object value, Type expectedType)
新的:
public T MyMethod<T>(object value)
然而,Mymethod 调用了一个私有的辅助方法,它也接受一个类型参数:
private object HelperMethod(object value, Type expectedType)
问题:我是否也应该使这个私有辅助方法通用?
我在下面有自己的答案,但我想知道我是否遗漏了什么。我非常感谢您的见解。
我的回答是否定的,我不应该使这个私有方法通用。
原因 1:这个辅助方法是私有的,所以即使我把它变成通用的,它也不会改进 API。
原因2:如果我让它泛型,那么非泛型的公共方法将不得不使用反射将类型参数传递给这个泛型方法,这意味着更多的开销。