Lassen Sie uns sagen, dass ich einige grundlegende Schnittstelle haben, die Generika-getrieben ist:C# Generika Frage - generische Schnittstelle Einschränkung
public interface Inteface<T> {
void Foo(T t);
}
Jetzt habe ich einige konkrete Umsetzung dieser Schnittstelle, die auch generisch ist:
public class InterfaceImpl<T> {
public void Foo(T t) {
// Whatever
}
}
Das sieht nicht gut aus, aber jetzt lassen Sie uns sagen, dass ich andere Klasse haben:
public class Ololo {
public void BadFunction<TShouldModelInterface>(TShouldModelInterface shouldModelInterface) {
// Whatever
}
}
Und lassen Sie uns sagen Ich möchte eine Überprüfung durchführen, wenn TShouldModelInterface
tatsächlich eines der möglichen Interface<T>
implementiert.
Wenn die Schnittstelle nicht generisch war, würde ich einfach etwas wie where TShouldModelInterface : Interface
schreiben.
Aber gibt es eine Möglichkeit, dieses Problem zu lösen, wenn die Schnittstelle ein ist?
Ich änderte Ihren Titel ein wenig, so dass es weniger allgemein ist –
@ Daniel Ahahah .. in der Tat weniger "generic" –
In Ihrem Beispiel '' InterfaceImpl '' nicht implementiert '' Inteface '' (fehlendes "r", BTW). Sie sollten es als '' public class InterfaceImpl : Schnittstelle '' deklarieren –