Het idee achter Dispose is dat het gebruikt wordt voor het vrijgeven van unmanaged resources binnen managed code. Omdat Dispose enkel in specifieke gevallen gebruikt wordt, en geen generieke destructor is, zou het raar zijn om methodes met een bepaalde naam een magische functie te geven. Met IDisposable dwing je eigenlijk een constraint af dat die class unmanaged resources gebruikt, en vrijgegeven moet worden..oisyn schreef op woensdag 19 oktober 2016 @ 13:04:
[...]
Dat is natuurlijk nonsens. De compiler weet met welk statische type hij te maken heeft en kan dus gewoon controleren of dat type een Dispose method heeft.
[...]
Je stelt dat het zo is, maar ik zie niet in waarom het tegen SOLID zou ingaan. Integendeel, het concept dat een class een specifieke method moet implementeren is abstracter dan een class die een interface moet implementeren.
Een ander punt is dat het volgens de specificatie mogelijk is om als programmeur Dispose zelf aan te roepen, in plaats van te wachten op de garbage collector. Dan is het hebben van een IDisposable interface erg handig, dan te klooien met reflectie om te kijken of het een Dispose methode heeft.