如何扩展DataRow类

时间:2012-07-09 00:08:19

标签: c# extension-methods nullable datarow

我想扩展System.Data.DataRow类,所以我制作了以下代码(并在我的课程中添加了using关键字)

namespace MyExtension
{
     public static class DataRowExt
      {
          public static string ToNullableDate(this DataRow dr)
          { return something;}
    }
}

但是,当我尝试以下代码时,ToNullableDate未显示在Intellisense中:

DataRow d = new DataRow();
d["Column"].ToNullableDate(); // ToNullableDate does not show up

我的扩展方法声明中是否有任何遗漏?或者我应该创建一个新类并继承DataRow类?

感谢

2 个答案:

答案 0 :(得分:3)

代码中有using MyExtension吗?此外,扩展名是DataRow,即d,但您正在d [" Column"]上查找。

从你的评论看来,它的值似乎是空的,你需要测试它而不是创建一个扩展...

 object value = d["Column"];
 if (value == DBNull.Value)
     // do something
 else
     // do something else 

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

namespace MyExtension
{
   public static class DataRowExt
   {
       public static string ToNullableDate(this DataRow dr, string Column)
       { return something;}
   }
}

然后像这样使用它:

d.ToNullableDate("Column");

答案 1 :(得分:2)

扩展方法将关闭,d,而不是索引器。

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

DataRow d = new DataRow();
d["Column"] as DateTime?;