Warum IList wie folgt definiert ist?Warum IList <T> implementieren IEnumerable <T> und ICollection <T> während ICollection <T> selbst IEnumerable implementiert <T>
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
public interface ICollection<T> : IEnumerable<T>, IEnumerable
public interface IEnumerable<T> : IEnumerable
Könnte es nicht sein, nur
public interface IList<T> : ICollection<T>
So zu testen ich diese Schnittstellen geschaffen, nur um sicher zu sein, ob das funktioniert!
public interface IOne
{
string One();
}
public interface ITwo : IOne
{
string Two();
}
public interface IThree : ITwo, IOne
{
string Three();
}
Während seiner völlig in Ordnung, klagt ReSharper über "Redundante Schnittstellen".
Irgendwelche Ideen, warum Microsoft mit dieser Implementierung fortfuhr?
Wo haben Sie die Duplizierung gesehen? (Was ist Ihre Quelle für die Quelle von 'IList', so zu sprechen?) –
@JonSkeet: Nur gedrückt 'F12' /' Go to Definition' auf der 'IList'. Es zeigte mir die "Methodensignatur" aus den 'Assembly-Metadaten'. Ich habe es von dort aus gesehen. –
Nebenbei ist es hilfreich, nur Backticks für Dinge zu verwenden, die wirklich Code sind. (Ich habe die zusätzlichen Bits von Ihrem Beitrag bearbeitet) –