为什么基于参数类型的“动态重载”不能被C#原生支持?我认为这需要动态分派,但由于虚拟方法调用也是动态分派,因此这对语言来说并不奇怪。那么为什么这个特性不是C#的一部分呢?使用反射实现此功能的最优雅解决方案是什么(也许有一些库可以使用)?
class Program
{
static void Main(string[] args)
{
var objs = new object[] { new Class1(), new Class2() };
foreach (var item in objs)
{
Method(item);
}
}
static void Method(Class1 obj)
{
}
static void Method(Class2 obj)
{
}
}
class Class1
{
}
class Class2
{
}
更新,确实,因为在这个例子中Method
不是虚拟的,并且只有一个参数,所以这仍然是单分派,但是分派的基数并不重要,只要它> 0。