我会发现为嵌套类中的类编写我的exensions方便/合乎逻辑。主要原因是我可以简单地命名该类Extensions
,并让它的外部命名范围为编译器提供一个唯一的类型名称。为什么不允许嵌套类中的扩展方法定义?
什么是技术上的原因不允许这样的:
public class Foo
{
ObjectSet<Bar> Bars { get; set; }
public static class Extensions
{
public static Bar ByName(this ObjectSet<Bar> bars, string name)
{
return bars.FirstOrDefault(c => c.Name == name);
}
}
}
而现在我要创建一个单独的独立类。
更新/说明:我并没有想象它是一个内部类的事实会影响扩展方法的可用性范围。我只想用一个单独的名称来解决实际的编码问题。
可能#4:编译器分析成本高。 http://blogs.msdn.com/b/ericlippert/archive/2012/06/18/implementation-defined-behaviour.aspx – 2012-07-12 01:25:48
Duplicate:http://stackoverflow.com/a/3934737/1464699 – 2012-07-12 01:30:07
可能的重复[为什么扩展方法只允许在非嵌套的非泛型静态类中使用?](http://stackoverflow.com/questions/3930335/why-are-extension-methods-only-allowed-in-non-nested-non-generic-static-class) – 2012-07-12 01:30:42