让我们假设我有以下重载函数:
void DoSomething(int x) { ... }
void DoSomething(float x) { ... }
void DoSomething(decimal x) { ... }
在以下方法中,我需要调用正确的重载。这是一个简单的实现方式:
void HaveToDoSomething(object data)
{
if (data is int) DoSomething((int)data);
else if (data is float) DoSomething((float)data);
else if (data is decimal) DoSomething((decimal)data);
}
当有大约20种类型需要检查时,这很乏味。是否有更好的方法自动完成所有这些投射?
我忘记提及的事情:DoSomething
不适用于泛型,因为每种类型都需要以不同的方式处理,我只知道运行时的类型。
答案 0 :(得分:2)
一种可能的方法是使用dynamic
:
void HaveToDoSomething(dynamic data)
{
DoSomething(data);
}
答案 1 :(得分:1)
您可以使用pip install -r requirements.txt --force --upgrade
,但它会对性能产生影响:
Reflection