我有控制台应用程序:
namespace LicenceCreator
{
class Program
{
static void Main(string[] args)
{
}
public static string TrimTextAndAppendDots(
this string stringArg, int maxLengthArg)
{
string retString;
if (stringArg.Length > maxLengthArg)
{
retString = stringArg.Substring(0, maxLengthArg) + "...";
}
else
{
retString = stringArg;
}
return retString;
}
}
}
但由于某种原因,当我从主方法中的字符串中调用它时,任何想法为什么都没有提取扩展方法?
答案 0 :(得分:4)
我猜测“未被拾取”,你的意思是“编译器抱怨它无法找到它”。然后:
扩展方法必须位于“静态”类中,并且必须具有指向该类的命名空间的“using”指令。你呢?
如果它是“编译器没有抱怨但字符串没有改变”那么可能你称之为
myString.TrimTextAndAppendDots(10);
而不是
myString = myString.TrimTextAndAppendDots(10);
答案 1 :(得分:2)
扩展方法必须在静态类中声明。
为了调用扩展方法,必须引用声明类的命名空间:
更新:
回答你的评论,无论如何我发现答案是正确的,但现在我们可以补充一下:
答案 2 :(得分:0)
扩展必须是静态类,就像这样:
public static class StringExtension
{
public static string TrimTextAndAppendDots(this string stringArg, int maxLengthArg)
{
string retString = "";
if (stringArg.Length > maxLengthArg)
{
retString = stringArg.Substring(0, maxLengthArg) + "...";
}
else
{
retString = stringArg;
}
return retString;
}
}
最后,您必须在StringExtension
语句中声明using
,无论您希望使用哪种扩展方法