为派生的 IDbCommand 类创建转换



我创建了一个派生的IDbCommand类,我想用它来更轻松地进行Sql-DB访问。

internal class Prozedur : IDbCommand
{
    private SqlCommand command = new SqlCommand();
    private SqlConnection connection;
    string commandtext;
    CommandType commandType;
    ...

现在我想扩展这个类来处理从 sql-procedure 的输出参数到本地类的属性的值赋值,如下所示:

Prozedur p = new Prozedur();
object.Name = p.Parameters["@Name"].Value;

这显然是行不通的,因为没有转换。我知道使用

object.Name = (string)p.Parameters["@Name"].Value;

会工作。我必须如何扩展Prozedur类,以便我能够使用

object.Name = p.Parameters["@Name"].Value;

并执行其他操作,例如检查参数值或检查空值?

实现一个方法来访问这些值并返回它们已键入:

public TValue GetValue<TValue>(string parameterName)
{
    // Do stuff here before returning the parameter value...
    return (TValue)Parameters[$"@{parameterName}"]?.Value;
}

稍后,您将按如下方式访问参数的值:

string name = proc.GetValue<string>("name");

除此之外...还有另一种方法,您可以在该方法上实现一种方法来获取特定类型的值:

public object GetValue(string parameterName)
{
    // Do common stuff here to any parameter value type
    return Parameters[$"@{parameterName}"]?.Value;
}
public string GetString(string parameterName)
{
     // Do common stuff here to string parameters only
     return (string)GetValue(parameterName);
}

相关内容

  • 没有找到相关文章

最新更新