Wie kann man am einfachsten testen, ob ein Objekt eine bestimmte Schnittstelle in C# implementiert? (Antwort auf diese Frage in Java )
Antworten
Zu viele Anzeigen?
Andrew Kennan
Punkte
13537
Die Verwendung des is
o as
Operatoren ist der richtige Weg, wenn Sie den Schnittstellentyp zur Kompilierzeit kennen und eine Instanz des Typs haben, den Sie testen. Etwas, das niemand sonst erwähnt zu haben scheint, ist Type.IsAssignableFrom
:
if( typeof(IMyInterface).IsAssignableFrom(someOtherType) )
{
}
Ich denke, das ist viel übersichtlicher, als das Array zu durchsuchen, das von GetInterfaces
und hat den Vorteil, dass es auch für Schulklassen funktioniert.
Martin Schneider
Punkte
12384
Wenn Sie das typisierte Objekt nach der Prüfung verwenden wollen:
Seit C# 7.0:
if (obj is IMyInterface myObj)
Dies ist dasselbe wie
IMyInterface myObj = obj as IMyInterface;
if (myObj != null)
Siehe .NET Docs: Überblick über den Mustervergleich
Rauhotz
Punkte
7594
famousgarkin
Punkte
12992
- See previous answers
- Weitere Antworten anzeigen