我在下面的方法中得到代码分析错误。
public static OracleCommand CreateStoredProcedureCommand(string name,
OracleConnection connection)
{
return new OracleCommand(name, connection) { CommandType = CommandType.StoredProcedure };
}
CA2000:Microsoft.可靠性:In方法'StoredProcedureHelper.CreateStoredProcedureCommand(字符串,OracleConnection)",对象"command"未全部释放异常路径。对对象"command"调用System.IDisposable.Dispose在所有引用都超出范围之前
如果不加以抑制,如何解决这一问题?
当对属性的赋值引发异常时,对象不会被释放。试试这个:
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;
}
}
它不能,从方法的角度来看,处理对象的责任必须始终由调用方承担。
您将不得不抑制它。