Care este modalitatea mai ușoară de a ști dacă un param tip implementează o interfață în c # 2.0?

De exemplu, având în vedere o metodă tip param căutăm ceva asemănător părții cu caractere aldine

void MyMethod< T >() {
if ( typeof(T).Implements( IMyInterface ) ) {

  //Do something   

else

  //Do something else 

}

Anwers folosind C# 3.0 sunt, de asemenea, binevenite, dar mai întâi renunță la cele .NET 2.0 vă rog;)

0

3 răspunsuri

Tocmai am încercat să folosesc

if( typeof(T).Equals(typeof(IMyInterface) ) 
     ...

Și, de asemenea, funcționează, dar răspunsul dvs. pare mai robust și a fost ceea ce căutam. Mulțumiri!

0
adăugat
Aceasta a funcționat pentru mine în cazul meu specific, dar comportamentul este cel pe care îl descrieți: nu funcționează dacă doriți să aflați dacă un obiect implementează IMyInterface, ci să afirmați că tipul T este o interfață IMyInterface. Mulțumesc pentru corecție!
adăugat autor Ricardo Amores, sursa
Da? ar trebui să funcționeze doar T este în mod specific IMyInterface
adăugat autor James Curran, sursa

cred

if (typeof (IMyInterFace).IsAssignableFrom(typeof(T))

ar trebui să funcționeze, de asemenea: dar nu văd un avantaj ...

0
adăugat

Tip.AsAssignableFrom

if(typeof(IMyInterface).IsAssignableFrom(typeof(T)))
{
 //something
}
else
{
 //something else
}
0
adăugat