Ich würde argumentieren, dass die Implementationen von IComparable und IDisposable nicht Verantwortlichkeiten überhaupt sind, und daher SRP nicht verletzen würde.
Im Zusammenhang mit SRP liegt die Verantwortung für einen Interaktor Ihres Systems (d. H. Einen Benutzer, eine Rolle oder ein externes System). Wenn Ihr System über ein Geschäftsanforderungsdokument verfügt, sollten alle Verantwortlichkeiten zumindest innerhalb der funktionalen oder nicht funktionalen Anforderungen abgeleitet werden. Wenn nicht, fragen Sie sich, welcher Geschäftsinhaber Sie bitten wird, zu ändern, wie sich ein Objekt verhält.
Beim ersten Projekt, an dem ich nach dem Lernen über SRC arbeitete, interpretierten wir es als "eine öffentliche Methode pro Klasse" und wendeten es als harte Regel an. Während das es leicht machte, in "Compliance" zu bleiben, hatten wir am Ende Code, der viel komplizierter war, als er sein musste.
Wenn Ihre IComparable/IDisposable-Implementierungen geändert werden müssen, wird diese Änderung durch den funktionalen (geschäftlichen) Teil Ihrer Klasse gesteuert, der ebenfalls geändert werden muss (zur gleichen Zeit und für denselben Grund).
Wie wäre es dann mit ISP? Sowohl SRP als auch ISP sind Teil von SOLID und sollten daher nicht in Konflikt stehen. –