Array
(
)

Interfaces c#

Abrzz
   - 03 jan 2008

Como é possivel saber se uma determinada classe implementa uma interface?
Por exemplo: Tenho controles no meu WinForms que implementam uma interface e para esses controles eu teria um tratamento especial.

//interface
public interface IMyComponentes
{
string Metodo1
{
set;
get;
}

string Metodo2
{
set;
get;
}
}

//controle
public class MyTextBox:IMyComponentes
{
//
}


Rjun
   - 03 jan 2008

Você pode fazer isso através de reflection.
Suponha que você tenha uma classe chamada Teste.

#Código


Teste teste;
Type[] tipos;

// Retorna as interfaces que a classe teste implementa
tipos = teste.GetType().GetInterfaces();

// Agora procure em tipos e veja se a classe implementa a interface
// desejada


ou você pode retonar o tipo direto da interface

#Código

Teste teste;
Type tipo;

// Retorna as interfaces que a classe teste implementa
tipo = teste.GetType().GetInterface("NomeDaInterface");

// Se tipo for diferente de null a classe implementa a interface que
// você passou como parâmetro



Abrzz
   - 04 jan 2008

ok RJun!
Deu certo, obrigado!