假设我需要一个简单的私有辅助方法,并且直观地在代码中它作为扩展方法是有意义的。有没有办法将该助手封装到唯一真正需要使用它的类?
例如,我试试这个:
class Program
{
static void Main(string[] args)
{
var value = 0;
value = value.GetNext(); // Compiler error
}
static int GetNext(this int i)
{
return i + 1;
}
}
编译器不会“看到”GetNext()
扩展方法。错误是:
扩展方法必须在非泛型静态类中定义
很公平,所以我将它包装在它自己的类中,但仍然封装在它所属的对象中:
class Program
{
static void Main(string[] args)
{
var value = 0;
value = value.GetNext(); // Compiler error
}
static class Extensions
{
static int GetNext(this int i)
{
return i + 1;
}
}
}
还是没有骰子。现在错误状态:
扩展方法必须定义在顶级静态类中;Extensions 是一个嵌套类。
这个要求有令人信服的理由吗?在某些情况下,辅助方法确实应该被私有封装,并且如果辅助方法是扩展方法,则在某些情况下代码会更清晰、更易读/可支持。对于这两个相交的情况,是否都可以满足,还是我们必须选择一个而不是另一个?