gpt4 book ai didi

c# - 为派生的 IDbCommand 类创建转换

转载 作者:行者123 更新时间:2023-11-30 23:16:22 25 4
gpt4 key购买 nike

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

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

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

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

关于c# - 为派生的 IDbCommand 类创建转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42051153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com