SqlDataReader's Klasse Anweisung enthält IDataReader, IDataRecord und IDisposable obwohl diese alle durch seine Basisklasse implementiert sind, DbDataReader: Klassenschlüsselwort - explizite Angabe von vererbten Schnittstellen?
public class SqlDataReader : DbDataReader,
IDataReader, IDisposable, IDataRecord {...}
public abstract class DbDataReader : MarshalByRefObject,
IDataReader, IDisposable, IDataRecord, IEnumerable {...}
In diesem Fall
gibt es einige technische Vorteil darauf hinweist, dass die abgeleitete Klasse Schnittstellen implementiert, die ihre Basisklasse zeigt bereits an, dass es implementiert? (Ich frage nicht, ob es sich um ein Legacy-Relikt, einen Tippfehler oder etwas zu Dokumentationszwecken handelt.)
Wo hast du das gesehen? Kann nicht auf der Website [referencesource.microsoft.com] (https://referencesource.microsoft.com/#System.Data/System/Data/SqlClient/SqlDataReader.cs) angezeigt werden. – Dmitry
@Dmitry, gut 'IDataReader' ist in beiden definiert, aber die Antwort ist nein, es gibt keinen Grund, redundante Interface-Deklarationen hinzuzufügen. –
@KirkWoll Was ist mit expliziter Schnittstellenimplementierung? In der 'SqlDataReader'-Klasse gibt es einen:' IDataReader IDataRecord.GetData (int i) '. – Dmitry