相关疑难解决方法(0)

通用重载决议

我有以下场景:

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一起使用,并且不允许打开泛型类型.

c# generics overloading

7
推荐指数
2
解决办法
2279
查看次数

标签 统计

c# ×1

generics ×1

overloading ×1