【发布时间】:2010-10-05 22:01:59
【问题描述】:
C# 窒息
delegate void Bar<T>(T t);
void foo(Bar bar)
{
bar.Invoke("hello");
bar.Invoke(42);
}
解决方法是使用接口
interface Bar
{
void Invoke<T>(T t);
}
但现在我需要不遗余力地定义接口的实现。我可以用委托和简单的方法实现同样的目标吗?
【问题讨论】:
-
你想要达到什么目的?采用
string的方法不能同时采用int。代表没有“重载”。 -
@dtb,但委托可以接受泛型参数,这些类型可以推断。
-
@Kirk Woll:当然。但是
Action<string>的实例仍然不能用int调用。而且您不能拥有未关闭的通用委托类型的实例。 -
@dtb,这是真的。因此,OP 的代码一开始就不起作用的原因是因为参数类型
Bar实际上并不存在——因为它代表了来自Bar<T>的离散类型。
标签: c# generics interface delegates