Это общий вопрос, хотя у меня есть конкретный экземпляр, на который я смотрю, поэтому я стараюсь сохранить заголовок и теги как можно более общие.Выбрасывает ли объект все свойства IDisposable?
Я делаю проект MVC с IOC. Мои конкретные репозитории реализуют IDisposable
, чтобы избавиться от контекста Ef.
Очевидно, что MVC обрабатывает объект Controller, который вызывается. Однако мне нужно переопределить Dispose()
в контроллере? Вот мой код, как прямо сейчас:
private IUserRepository repository;
public UserController(IUserRepository repository) {
this.repository = repository;
}
protected override void Dispose(bool disposing) {
if (repository is IDisposable && repository != null) {
(repository as IDisposable).Dispose();
repository = null;
}
base.Dispose(disposing);
}
проверить, чтобы убедиться, что он реализует IDisposable
как на Mocks из моих модульных тестов я не думаю реализовать.
Теперь, мой вопрос в том, что переопределение Dispose()
избыточное? Когда Controller (или любой другой объект) получает доступ, собирает ли Garbage Collector любые свойства, которые реализуют IDisposable
, или я делаю это правильно?
Dispose - это просто вызов метода - он не имеет ничего общего с Garbage Collector, и ничего не происходит, что явно не реализовано методом Dispose. – Joe