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?
jahu
Punkte
5137
Kürzlich habe ich versucht, die Antwort von Andrew Kennan zu verwenden, und aus irgendeinem Grund hat sie bei mir nicht funktioniert. Ich habe stattdessen die folgende Lösung verwendet, und es hat funktioniert (Hinweis: Die Angabe des Namensraums kann erforderlich sein).
if (typeof(someObject).GetInterface("MyNamespace.IMyInterface") != null)
iamrcw
Punkte
31
Anthony Tristan
Punkte
59
Ich hatte eine Situation, in der ich eine Variable an eine Methode übergab und mir nicht sicher war, ob es sich um eine Schnittstelle oder ein Objekt handeln würde.
Die Ziele waren:
- Wenn item eine Schnittstelle ist, instanziieren Sie ein Objekt, das auf dieser Schnittstelle basiert, wobei die Schnittstelle ein Parameter im Konstruktoraufruf ist.
- Wenn das Element ein Objekt ist, geben Sie eine Null zurück, da der Konstuktor für meine Anrufe eine Schnittstelle erwarten und ich wollte nicht, dass der Code zu tanken.
Dies habe ich mit den folgenden Maßnahmen erreicht:
if(!typeof(T).IsClass)
{
// If your constructor needs arguments...
object[] args = new object[] { my_constructor_param };
return (T)Activator.CreateInstance(typeof(T), args, null);
}
else
return default(T);
Yoann. B
Punkte
10835
- See previous answers
- Weitere Antworten anzeigen