Общая функция для обработки одноразовых объектов
Я работаю над классом, который имеет дело со многими объектами Sql - Connection, Command, DataAdapter, CommandBuilder и т. Д. Есть несколько случаев, когда у нас есть такой код:
if( command != null )
{
command.Dispose();
}
if( dataAdapter != null )
{
dataAdapter.Dispose();
}
etc
Я знаю, что этого недостаточно с точки зрения дублирования, но оно начало пахнуть. Причина, по которой я думаю, что он пахнет, заключается в том, что в некоторых случаях объект также имеет значение null.
if( command != null )
{
command.Dispose();
command = null;
}
Я хотел бы избавиться от дублирования, если это возможно. Я пришел с этим универсальным методом, чтобы избавиться от объекта и установить его на нуль.
private void DisposeObject<TDisposable>( ref TDisposable disposableObject )
where TDisposable : class, IDisposable
{
if( disposableObject != null )
{
disposableObject.Dispose();
disposableObject = null;
}
}
Мои вопросы ...
Является ли эта общая функция плохой идеей?Нужно ли устанавливать объект наnull
?РЕДАКТИРОВАТЬ:
Я знаю оusing
утверждение, однако я не всегда могу использовать его, потому что у меня есть некоторые переменные-члены, которые должны сохраняться дольше, чем один вызов. Например, объекты подключения и транзакции.
Спасибо!