Jak sprawdzić, czy klasa implementuje interfejs?

Jak sprawdzić, czy klasa implementuje interfejs?
WC
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 7 lat
0

Istnieje kilka sposobów, aby sprawdzić, czy klasa implementuje interfejs. Które z nich są poprawne i zawsze zwrócą prawidłowy wynik?

Kopiuj
//Sposób 1
if(klasa.IsClass && klasa.GetInterface("Interfejs") != null) {}

//Sposób 2
if(typeof(Interfejs).IsAssignableFrom(klasa)) {}

//Sposób 3
foreach(Type interfejs in klasa.GetInterfaces())
{
   if(interfejs == typeof(Interfejs)) {}
   break;
}

//Inne sposoby?

Nie jestem pewny, czy metoda GetInterface() w sposobie 1 szuka interfejsu tylko wśród implementowanych przez klasę "klasa", czy we wszystkich załadowanych.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Wrocław
0

Nie prościej użyć operatora is?

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

Jeżeli chcesz sprawdzić czy na podstawie obiektu typu Type to sposób drugi, bo kod nie zmieni się, jeżeli np. postanowisz zmienić interfejs na klasę abstrakcyjną, a operator is jeżeli masz literał w kodzie.

PI
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:8
0

Ja bym Ci radził użyć opreatora is albo as więcej o nich możesz poczytać w poniższym linku.
link

edytowany 1x, ostatnio: _Piotrekk_

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.