Customizing destructors in C#