struct FooPart { // other data (which was immutable) Pen pen; public void ReleasePens() { if ( pen != null ) { pen.Dispose(); pen = null; } }}class Foo{ FooPart[] parts; public void ReleasePens() { foreach ( FooPart part in parts ) { part.ReleasePens(); } }}
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.