首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何扩展DataRow类

如何扩展DataRow类
EN

Stack Overflow用户
提问于 2012-07-09 08:08:19
回答 2查看 1.3K关注 0票数 0

我想扩展System.Data.DataRow类,所以我编写了以下代码(并在类中添加了using关键字)

代码语言:javascript
复制
namespace MyExtension
{
     public static class DataRowExt
      {
          public static string ToNullableDate(this DataRow dr)
          { return something;}
    }
}

但是,当我尝试以下代码时,ToNullableDate没有出现在智能感知中:

代码语言:javascript
复制
DataRow d = new DataRow();
d["Column"].ToNullableDate(); // ToNullableDate does not show up

我的扩展方法语句中是否遗漏了什么?或者我应该只创建一个新类并从DataRow类继承?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-09 08:09:19

扩展方法应该是off,d,而不是关闭索引器。

仅供参考,您可以这样做:

代码语言:javascript
复制
DataRow d = new DataRow();
d["Column"] as DateTime?;
票数 2
EN

Stack Overflow用户

发布于 2012-07-09 08:11:39

你的代码里有using MyExtension吗?此外,扩展名在DataRow上,它是d,但您要在d"Column“中查找它。

从你的评论来看,这个值似乎有null,你需要测试一下,而不是创建一个扩展……

代码语言:javascript
复制
 object value = d["Column"];
 if (value == DBNull.Value)
     // do something
 else
     // do something else 

如果你真的想要一个扩展方法,一种选择是在方法中传递列:

代码语言:javascript
复制
namespace MyExtension
{
   public static class DataRowExt
   {
       public static string ToNullableDate(this DataRow dr, string Column)
       { return something;}
   }
}

然后像这样使用它:

代码语言:javascript
复制
d.ToNullableDate("Column");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11387746

复制
相关文章

相似问题

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