为派生的 IDbCommand 创建转换 class

Create Conversion for derived IDbCommand class

我创建了一个派生的 IDbCommand classe,我想使用它来简化 Sql-DB 访问。

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

现在我想扩展此 class 以处理从 sql 过程的输出参数到本地 class 属性的值分配,如下所示:

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

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

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

会起作用。我要如何扩展 Prozedur class,这样我才能使用

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

并做其他事情,例如检查参数值或检查空值?

实现一种方法来访问这些值并且return它们已经输入:

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);
}