Вы можете использовать класс декоратора, который имеет финализатор и метод dispose и предупреждает вас о пропущенном удалении.Поэтому, если ваш класс подобен этому:
public class CustomerTracker
{
public bool IsNew() {...}
}
Затем определите интерфейс и заставьте код клиента использовать его:
public interface ICustomerTracker
{
public bool IsNew();
}
Определите декоратор и используйте его там, где вы создаете любой из этихобъекты:
public class CustomerTrackerMemDecorator : ICustomerTracker
{
ICustomrTracker tracker;
CustomerTrackerMemDecorator (ICustomrTracker tracker)
{
this.tracker = tracker;
}
public bool IsNew() { return tracker.IsNew(); }
~CustomerTrackerMemDecorator
{
Debug.Assert("Missed dispose found!");
}
public override Dispose()
{
tracker.Dispose();
GC.SupressFinalize(this);
}
}
Тогда где бы вы ни находились:
CustomerTracker tracker = new CustomerTracker ();
замените его на
ICustomerTracker tracker = newCustomerTrackerMemDecorator (новый CustomerTracker ());