C# 如何从子 class 获取父 class 属性
C# how to get parent class property from child class
也许我有点笨,但我需要从子class中获取基本class参数的值。我该怎么做?
我的代码:
using (OracleConnection connection = new OracleConnection(ConnStr)) {
connection.Open();
using (OracleCommand cmd = connection.CreateCommand()) {
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Package.StoredProcedure";
cmd.Parameters.Add(DbParam("in_id", OracleDbType.Int32, id));
cmd.Parameters.Add(DbOutParam("out_success", OracleDbType.Int32, 1));
cmd.ExecuteNonQuery();
int out_success = cmd.Parameters.GetIntValue("out_success");
connection.Close();
}
}
我为 OracleParameterCollection
写了扩展 GetIntValue
private static int GetIntValue(this OracleParameterCollection parameter, string parameterName) {
bool success = int.TryParse(parameter[parameterName].Value.ToString(), out int response);
if (success == false) {
Console.Out.WriteLine($"TryParse parameter: {parameterName}");
throw new Exception("Unhandled Exception");
}
return response;
}
我需要获得扩展 GetIntValue
属性 cmd.CommandText
以便在控制台中打印 - 这怎么可能?
如果需要引用命令,让扩展方法接受命令实例,而不是参数:
private static int GetIntValue(this OracleCommand command, string paramName)
{
var parameters = command.Parameters;
if (!parameters.Contains(parameterName))
throw new ArgumentException(
$"{command.CommandText} does not contain param {parameterName}");
if (!int.TryParse(parameters[paramName].Value.ToString(), out int response))
throw new FormatException(
$"could not parse {paramName} in {command.CommandText}");
return response;
}
请注意,从安全角度来看,在异常情况下转储命令文本可能不是一个好主意。
也许我有点笨,但我需要从子class中获取基本class参数的值。我该怎么做?
我的代码:
using (OracleConnection connection = new OracleConnection(ConnStr)) {
connection.Open();
using (OracleCommand cmd = connection.CreateCommand()) {
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Package.StoredProcedure";
cmd.Parameters.Add(DbParam("in_id", OracleDbType.Int32, id));
cmd.Parameters.Add(DbOutParam("out_success", OracleDbType.Int32, 1));
cmd.ExecuteNonQuery();
int out_success = cmd.Parameters.GetIntValue("out_success");
connection.Close();
}
}
我为 OracleParameterCollection
GetIntValue
private static int GetIntValue(this OracleParameterCollection parameter, string parameterName) {
bool success = int.TryParse(parameter[parameterName].Value.ToString(), out int response);
if (success == false) {
Console.Out.WriteLine($"TryParse parameter: {parameterName}");
throw new Exception("Unhandled Exception");
}
return response;
}
我需要获得扩展 GetIntValue
属性 cmd.CommandText
以便在控制台中打印 - 这怎么可能?
如果需要引用命令,让扩展方法接受命令实例,而不是参数:
private static int GetIntValue(this OracleCommand command, string paramName)
{
var parameters = command.Parameters;
if (!parameters.Contains(parameterName))
throw new ArgumentException(
$"{command.CommandText} does not contain param {parameterName}");
if (!int.TryParse(parameters[paramName].Value.ToString(), out int response))
throw new FormatException(
$"could not parse {paramName} in {command.CommandText}");
return response;
}
请注意,从安全角度来看,在异常情况下转储命令文本可能不是一个好主意。