Ich versuche zu verstehen, wie die Vererbung von Schnittstellen funktioniert. Wenn eine Schnittstelle eine andere Schnittstelle erbt, aber über eine Methode mit derselben Signatur verfügt, gibt der Compiler eine Warnung aus, dass das Basiselement ausgeblendet ist (und dies scheint logisch).Interface-Vererbung - Verbergen-Methode von der Eltern-Schnittstelle - warum kann ich beide Methoden in der implementierenden Klasse haben?
Wenn ich später die Kind-Schnittstelle in einer Klasse implementieren, muss ich sowohl die Eltern- als auch die Child-Interface-Methode mit der gleichen Signatur implementieren und das verwirrt mich ... Ich dachte, dass wenn das Elternelement I versteckt ist muss nur die Child-Interface-Methode implementieren?
(Ich kam auf diese während bei IEnumerable
und IEnumerable<T>
Schnittstellen suchen)
interface IMyBase
{
int DoSomething();
}
interface IMyDerived:IMyBase
{
int DoSomething();
}
class myClass : IMyDerived
{
int IMyDerived.DoSomething()
{
throw new NotImplementedException();
}
int IMyBase.DoSomething()
{
throw new NotImplementedException();
}
}
Sie implementieren die Schnittstellen explizit. In diesem Fall ist die Vererbung vom Tisch. – CodeCaster
die Interface-Member können nicht versteckt werden, gibt es keine Klassen –
Setzen Sie 'DoSomething()' nicht in 'IMyDerived', es erbt es bereits von' IMyBase'. Wenn Sie es in diese Schnittstelle einfügen, wird Null hinzugefügt. Ich bin wirklich überrascht, dass der Compiler sich nicht darüber beschwert? Ich würde zumindest eine Warnung erwarten. – Liam