2013-02-21 13 views
7

Podaj przykładowy kod poniżej, czy ktoś może wyjaśnić, dlaczego pierwsze połączenie typeof() działa poprawnie, ale drugie nie działa? Nie ma znaczenia, czy są to klasy, czy interfejsy, które zawodzą w inny sposób.Nie można uzyskać typu interfejsu/klasy, używając więcej niż jednego rodzaju ogólnego?

interface ITestOne<T1> 
{ 
    T1 MyMethod(); 
} 

interface ITestMany<T1, T2> 
{ 
    T1 MyMethod(T2 myParameter); 
} 

void Main() 
{ 
    var typeOne = typeof(ITestOne<>); //This line works 
    var typeTwo = typeof(ITestMany<>); //Compile error 
} 

Odpowiedz

9

Musisz poinformować kompilator, że szukasz typowego typu z dwoma ogólnymi argumentami. Dodaj przecinek między nawiasami ostrymi:

var typeTwo = typeof(ITestMany<,>); 
+2

DOH! Ok, jest moja chwila Homera Simpsona. Dziękuję bardzo za szybką reakcję !! Wkrótce po zamknięciu obowiązkowego okna o długości 15 min zaznaczę to jako odpowiedź. –

+0

Bez obaw :) Wszyscy mamy te chwile – TheEvilPenguin

Powiązane problemy