我想扩展字符串对象并将这些扩展作为嵌套类的一部分,但是直接这样做:
public static class StringExtensions
{
public static class Patterns
{
public static string NumbersOnly(this string s)
{
return new String(s.Where(Char.IsDigit).ToArray());
}
}
}
Run Code Online (Sandbox Code Playgroud)
...给出了这篇文章标题所述的错误.
我怎么能以不同的方式写这个,这样当我调用它时,可以像这样调用它:
string s = "abcd1234";
s = s.Patterns.NumbersOnly();
Run Code Online (Sandbox Code Playgroud)
我知道我可以NumbersOnly作为直接的孩子移动StringExtensions以使错误消失,但我的意图是将方法组织成具有许多方法的类别.在这个例子中,NumbersOnly只是我打算在那里进行的大约40个模式匹配中的一个,我不希望用以下方法混淆对象的根; PatternNumbersOnly或者NumbersOnly等等.
注意:这个问题是不是这样的问题不同的这一个,因为我没有问为什么这个问题的存在,我要寻找一个解决办法,这样我可以有此错误的原因是否认我的功能或类似的功能.
你不能 - 没有"扩展属性".
你可以得到最好的 - s.Patterns().NumbersOnly()通过引入中间类来从Patterns扩展方法返回.
Sample将所有方法放在单个类中,但只要扩展方法满足"在顶级静态类中定义",您就可以按照任何方式将它们组织到不同的类中:
public static class StringExtensions
{
public class PatternsX
{
public string Value {get;set;}
}
public static PatternsX Patterns(this string s)
{
return new PatternsX { Value = s};
}
public static string NumbersOnly(this PatternsX s)
{
return new String(s.Value.Where(Char.IsDigit).ToArray());
}
}
....
Console.WriteLine("123ver".Patterns().NumbersOnly()); // results in 123
Run Code Online (Sandbox Code Playgroud)