asp.net 网页表单页面代码隐藏的扩展方法问题
Problem with extension method with asp.net web form page code behind
我正在创建一个扩展方法来使用 C# 检查空数据行,我正在尝试在我的 asp.net 网络表单代码中使用扩展方法,但告诉我方法 IsEmpty 不在当前上下文中
这是我正在尝试的代码
public static class IsNullValidator
{
public static bool IsNullEquivalent( this object value)
{
return value == null
|| value is DBNull
|| string.IsNullOrWhiteSpace(value.ToString());
}
public static bool IsEmpty( this DataRow row)
{
return row == null || row.ItemArray.All(i => i.IsNullEquivalent());
}
}
我这样称呼它
DataRow[] row =getRowMethod();
if IsEmpty(row){"do some functionality"}
如果我通过将此关键字删除到下方来更改 IsEmpty 签名,它的工作方式如下
public static bool IsEmpty( DataRow row)
{
return row == null || row.ItemArray.All(i => i.IsNullEquivalent());
}
if IsEmpty(row[0]){"do some functionality"}
我需要使用此扩展来检查任何数据行,并在将来检查任何数据表
我可以使用以下方法检查空数据表
public static bool IsEmptyDatatable (DataTable dt)
{
return dt == null || dt.Rows.Cast<DataRow>().Where(r=>r.ItemArray[0]!=null).All(i => i.IsNullEquivalent());
}
扩展方法是 "extensions" 的一种类型。在您的情况下,您正在扩展 DataRow
class。对于扩展方法,您需要有一个 class 的实例来调用它,例如:
DataRow[] row =getRowMethod();
if row.IsEmpty(){"do some functionality"}
在示例中,扩展方法在 DataRow
class 的实例 row
上调用。
如果您认为 this
关键字表示 "this method can be called on an instance of 'this' class" - 在您的情况下是 DataRow
,这可能有助于您理解它。
最后我得到了下面的解决方案,谢谢大家...您提出的所有建议都很有帮助
public static bool IsNullEquivalent( this object value)
{
return value == null
|| value is DBNull
|| string.IsNullOrWhiteSpace(value.ToString());
}
public static bool IsEmptyDataRow(this DataRow row)
{
return row == null || row.ItemArray.All(i => i.IsNullEquivalent());
}
public static bool IsEmptyDatatable (this DataTable dt)
{
return dt == null || dt.Rows.Cast<DataRow>().All(i => i.IsEmptyDataRow());
}
我正在创建一个扩展方法来使用 C# 检查空数据行,我正在尝试在我的 asp.net 网络表单代码中使用扩展方法,但告诉我方法 IsEmpty 不在当前上下文中 这是我正在尝试的代码
public static class IsNullValidator
{
public static bool IsNullEquivalent( this object value)
{
return value == null
|| value is DBNull
|| string.IsNullOrWhiteSpace(value.ToString());
}
public static bool IsEmpty( this DataRow row)
{
return row == null || row.ItemArray.All(i => i.IsNullEquivalent());
}
}
我这样称呼它
DataRow[] row =getRowMethod();
if IsEmpty(row){"do some functionality"}
如果我通过将此关键字删除到下方来更改 IsEmpty 签名,它的工作方式如下
public static bool IsEmpty( DataRow row)
{
return row == null || row.ItemArray.All(i => i.IsNullEquivalent());
}
if IsEmpty(row[0]){"do some functionality"}
我需要使用此扩展来检查任何数据行,并在将来检查任何数据表 我可以使用以下方法检查空数据表
public static bool IsEmptyDatatable (DataTable dt)
{
return dt == null || dt.Rows.Cast<DataRow>().Where(r=>r.ItemArray[0]!=null).All(i => i.IsNullEquivalent());
}
扩展方法是 "extensions" 的一种类型。在您的情况下,您正在扩展 DataRow
class。对于扩展方法,您需要有一个 class 的实例来调用它,例如:
DataRow[] row =getRowMethod();
if row.IsEmpty(){"do some functionality"}
在示例中,扩展方法在 DataRow
class 的实例 row
上调用。
如果您认为 this
关键字表示 "this method can be called on an instance of 'this' class" - 在您的情况下是 DataRow
,这可能有助于您理解它。
最后我得到了下面的解决方案,谢谢大家...您提出的所有建议都很有帮助
public static bool IsNullEquivalent( this object value)
{
return value == null
|| value is DBNull
|| string.IsNullOrWhiteSpace(value.ToString());
}
public static bool IsEmptyDataRow(this DataRow row)
{
return row == null || row.ItemArray.All(i => i.IsNullEquivalent());
}
public static bool IsEmptyDatatable (this DataTable dt)
{
return dt == null || dt.Rows.Cast<DataRow>().All(i => i.IsEmptyDataRow());
}