C # IDisposable question

У меня есть следующий пример кода:

public interface IRepository {
   // Whatever
}

public class SampleRepository : IRepository {
   // Implements 'Whatever'
}

public class NHibernateRepository : IRepository, IDisposable {

   // ...

   public void Dispose() { ... }
}

Теперь - это действительно плохо? Я не уверен, но это похоже на без маркировки деструктор базового класса virtual в C ++ .

Я не хочу, чтобы интерфейс IRepository реализовывал IDisposable , потому что это привело бы к нежелательной сложности и кучке классов, которые также должны были бы реализовать IDisposable ].


Как следует поступать в этом случае?

Я уверен, что это может произойти с любой иерархией типов - когда один из производных типов должен управлять одноразовыми ресурсами.

Итак, что мне делать - подтянуть IDisposable к самому первому интерфейсу или оставить его как есть и надеяться, что пользователь будет различать одноразовые и одноразовые репозитории?

Спасибо.

8
задан Kenan D 13 December 2010 в 17:18
поделиться