If you just want to keep a list of objects that can be disposed of, you'll need a List<IDisposable>. Any class that implements that interface, either directly or indirectly, can be stored there.
var disposables = new List<IDisposable>();
disposables.ForEach(d => d.Dispose());
I don't know if this is perfect either. Just a pointer.