我想扩展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类?
感谢
答案 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?;