首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写新的SqlParameter

重写新的SqlParameter
EN

Stack Overflow用户
提问于 2016-05-31 13:03:30
回答 2查看 255关注 0票数 1

我需要检查SqlParameter对象的值,并根据特殊的标签更改它。ie: BB ==>棒球,FP ==>快速投球。

我可以通过这样一个额外的功能来完成这个任务:

代码语言:javascript
复制
_params.Add(new SqlParameter("@Change", paramCheck(obj.Change)));

我想尝试重写新的SqlParameter方法/函数,并在那里运行我的检查。我怎么能这么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-31 13:08:30

好吧,您不能完全覆盖new SqlParameter,因为sealed,但是您可以创建一个返回新SqlParameter的函数

代码语言:javascript
复制
public SqlParameter NewSqlParameter(string name, object value) 
{
    return new SqlParameter(name, paramCheck(value));
}

并称其为:

代码语言:javascript
复制
_params.Add(NewSqlParameter("@Change", obj.Change));
票数 3
EN

Stack Overflow用户

发布于 2016-05-31 13:08:02

如何构建一个扩展方法:

代码语言:javascript
复制
public static void Add(this SqlParameterCollection parms, SomeType obj)
{
    // do some checks

    // add the parameter
}

现在它的用法如下所示:

代码语言:javascript
复制
_params.Add(obj);

更新:如下面帕特里克所述,如果参数来自多个类型,那么如何添加参数是这里关注的问题。如果不对应用程序本身有更多的了解,就不可能知道答案。

但是,如果对象共享一个接口,则接口可能是答案。如果它们是未知的物体,反射可能是答案。两者都不是很难实现的。但是这个扩展方法为您提供了封装该实现的灵活性。

如果最终不得不使用反射,Patrick提出了一个很好的担忧,即您可能希望将方法的名称更改为类似于AddParamWithCheck的内容,因为此时您将接受一个object而不是一个众所周知的类型。然而,从这个问题中我并没有暗示这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37546568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档