Jak sprawdzić, czy klasa implementuje interfejs?

0

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

//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.

0

Nie prościej użyć operatora is?

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.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1