Если я создаю контроллер IDisposable
, я предполагаю, что метод Dispose
все еще не будет вызываться GC. Значит, я должен был бы добавить:Контроллеры и IDisposable
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected override void Dispose(bool disposing)
{
if (!isDalDisposed)
{
isDalDisposed = true;
if (disposing)
DAL.Dispose();
}
base.Dispose(disposing);
}
Я прочитал, что использование Object.Finalize
является плохой практикой и следует избегать, где это возможно.
Проблема заключается в том, что мои «службы» создаются в конструкторе по умолчанию, который не позволяет мне использовать оператор using
для управления временем жизни каждой службы. Итак, каков был бы правильный способ справиться с этой проблемой?
Вы используете ASP.NET MVC? –
какие контроллеры вы говорите? В WebAPI контроллеры создаются для каждого запроса, поэтому нет необходимости явно указывать. –
Да, я говорю о веб-контроллерах api. У меня есть некоторые сервисы, которые являются одноразовыми, и я создаю их в конструкторе. Мне нужно избавиться от них, когда они закончены, но я пытаюсь найти способ сделать это, который не использует метод финализации, потому что я читал, что это плохая практика. – r3plica