Общая функция для обработки одноразовых объектов

Я работаю над классом, который имеет дело со многими объектами 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 утверждение, однако я не всегда могу использовать его, потому что у меня есть некоторые переменные-члены, которые должны сохраняться дольше, чем один вызов. Например, объекты подключения и транзакции.

Спасибо!

Ответы на вопрос(10)

Ваш ответ на вопрос