我在下面的方法中遇到代码分析错误。
public static OracleCommand CreateStoredProcedureCommand(string name,
OracleConnection connection)
{
return new OracleCommand(name, connection) { CommandType = CommandType.StoredProcedure };
}
CA2000:Microsoft。可靠性:方法 “StoredProcedureHelper.CreateStoredProcedureCommand(字符串, OracleConnection)',对象'命令'并未全部放置 异常路径。在对象'command'上调用System.IDisposable.Dispose 在所有引用都超出范围之前
如何在不压制这个的情况下解决这个问题?
答案 0 :(得分: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)
它不能,看着这个方法,处理对象的责任必须始终在于调用者。
你必须压制它。