public static string ToTrimmedString(this DataRow row, string columnName)
{
return row[columnName].ToString().Trim();
}
编译正常,但它不会出现在DataRow的intellisense中......
答案 0 :(得分:21)
我的猜测是你没有包含命名空间。
答案 1 :(得分:9)
确保此方法位于自己的static class
,与消费的DataRow分开的类。
namespace MyProject.Extensions
{
public static class DataRowExtensions
{
//your extension methods
}
}
在您的消费者中,确保您:
using MyProject.Extensions
答案 2 :(得分:1)
我有同样的问题。我的错误并不是我错过了静态类或静态方法,而是我的扩展所在的类不公开。
答案 3 :(得分:0)
除了缺少使用外,可能还会出现以下症状相同的情况:
如果您在类本身的方法内(或者在类的实现者/继承者中),则需要使用this
。
文件扩展名.cs:
namespace a
{
public static void AExt(this A a) {}
}
文件user.cs
namespace a
{
class A {}
class B : A
{
this.AExt();
// AExt() will not work without this.
}
}
答案 4 :(得分:0)
如果您使用其他名称空间,请尝试以下代码。
namespace Extensions
{
public static class StringExtensions
{
public static bool IsNumeric(this string inputString)
{
return decimal.TryParse(inputString, out decimal result);
}
}
}
namespace Business
{
// add here other namespaces
using Extensions;
public static class Tools
{
public static bool Check(string inputString)
{
return inputString.IsNumeric();
}
}
}