C#中是否可以将泛型传递给重载方法,并将其解析为方法的非泛型版本?例如:
class Program {
static void Main(string[] args) {
A a = new A();
Process(a);
Console.ReadLine();
}
static void Process<T>(T item) {
Writer(item);
}
// Writer methods...
static void Writer<T>(T item) {
Console.WriteLine("Type: " + item.GetType());
Console.WriteLine("You lose");
}
static void Writer(A item) {
item.Write();
}
}
class A {
public void Write() {
Console.WriteLine("You found me!");
}
}
此代码输出:
输入:Foo.A
你输了
我想看看:
你找到了我!
有没有办法做到这一点,或类似的东西?我正在使用C#4。
答案 0 :(得分:5)
您可以使用dynamic
将重载解析推迟到运行时:
static void Process<T>(T item)
{
dynamic d = item;
Writer(d);
}