我有以下场景:
class Foo { }
class Foo<T> : Foo { }
Run Code Online (Sandbox Code Playgroud)
然后是两种方法
void DoStuff(Foo foo)
{
DoStuffImpl(foo);
}
void DoStuffImpl(Foo foo)
{
Console.WriteLine("A");
}
void DoStuffImpl<T>(Foo<T> foo)
{
Console.WriteLine("B");
}
void Main()
{
DoStuff(new Foo<int>()); // prints A
}
Run Code Online (Sandbox Code Playgroud)
(注意,代码是在浏览器中编写的,但描述了我面临的情况)
如何让它调用泛型方法,然后打印B?
这可以在没有反思的情况下完成吗?关于如何用反射完成,我有一些想法,但我正在寻找一个更清洁的解决方案,如果存在的话.
注意:我不能创建DoStuff泛型,因为这将与WCF一起使用,并且不允许打开泛型类型.