Jak sprawdzić, czy klasa implementuje interfejs?

Jak sprawdzić, czy klasa implementuje interfejs?
WC
  • Rejestracja: dni
  • Ostatnio: dni
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
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Nie prościej użyć operatora is?

RE
  • Rejestracja: dni
  • Ostatnio: dni
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: dni
  • Ostatnio: dni
  • 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

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.