区分重载的泛型方法和非泛型方法

本文关键字:泛型方法 重载 | 更新日期: 2023-09-27 18:21:21

这必须在某个地方涵盖,但我很难表达我的搜索条件,所以…

下面是由同一类型声明的三个实例方法。

void Invoke(int timeout);
void Invoke<T>(T data);
T Invoke<T>(int timeout);

我想调用第二个方法,传递一个Int32参数,并且不使用反射。选项包括:

Invoke(1);
Invoke<int>(1);
Invoke((int)1);
Invoke<int>((int)1);

但是,这些都没有调用所需的方法。我可以实现我想要的吗?还是应该采用方法重命名?

注意,如果第三种方法不存在,我可以简单地这样做:

Invoke(1); // Invokes the first method
Invoke<int>(1); // Invokes the second method

区分重载的泛型方法和非泛型方法

使用命名参数:

Invoke(data: 1);