2012-02-09 6 views
1

Я получаю ошибку анализа кода в следующем методе.CA2000: объект Microsoft.Reliability не расположен по всем путям исключений

public static OracleCommand CreateStoredProcedureCommand(string name, 
                  OracleConnection connection) 
    { 
     return new OracleCommand(name, connection) { CommandType = CommandType.StoredProcedure }; 
    } 

CA2000: Microsoft.Reliability: В методе 'StoredProcedureHelper.CreateStoredProcedureCommand (строка, OracleConnection)', 'команда' объект не расположен вдоль всех путей исключения. Вызов System.IDisposable.Dispose на «команды» объекта , прежде чем все ссылки на это не входит в сферу

как он может это быть решена без подавления этого?

ответ

7

Объект не расположен, когда присвоение свойства вызывает исключение. Попробуйте следующее:

public static OracleCommand CreateStoredProcedureCommand(string name, 
                 OracleConnection connection) 
{ 
    OracleCommand result = new OracleCommand(name, connection); 
    try 
    { 
     result.CommandType = CommandType.StoredProcedure; 
     return result; 
    } 
    catch 
    { 
     result.Dispose(); 
     throw; 
    } 
} 
+1

Уродливые. Но правильно. –

0

Он не может, глядя на метод, ответственность за удаление объекта всегда должна лежать на вызывающем абоненте.

Вам нужно будет подавить его.

+0

Как говорит Хенрик, существует возможность, чтобы средство настройки свойств выбрало исключение, оставив объект незастроенным. –

Смежные вопросы