Allgemeine Überlastungsauflösung

Ich habe das folgende Szenario:

class Foo { }

class Foo<T> : Foo { }

nd dann zwei Method

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
}

(Hinweis, der Code wurde im Browser geschrieben, beschreibt aber die Situation, in der ich mich befinde)

Wie kann ich die generische Methode aufrufen und B ausgeben?

Kann das überhaupt ohne Reflektion gemacht werden? Ich habe einige Ideen, wie man es mit Reflektion machen kann, aber ich suche nach einer saubereren Lösung, falls es eine gibt.

Hinweis: Ich kann nicht machenDoStuff generisch, da dies mit WCF verwendet wird und offene generische Typen nicht zulässig sind.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage