2012-07-17 111 views
0

我最近问了一个question about designing API that are mostly based on interfaces and extension methods哪些.NET语言对扩展方法有语法支持?

这让我想知道,是否有.NET语言不直接支持扩展方法,即使用这种API工作的语言会变成一种痛苦?我知道扩展方法是简单的静态方法,可能总是这样调用,但是“支持扩展方法”我的意思是更紧密地集成到调用对象方法的语言语法上;扩展方法可以在C#中使用,就好像它们是常规方法一样。

除了C#和VB.NET,哪种比较流行的.NET语言实际上支持扩展方法,哪些不支持?

回答

3

F#支持最新版本的扩展方法(例如VS2010附带的版本)。 另请参阅this answer以“使用F#代码中C#中定义的扩展方法”这个问题。


PowerShell的can be made to sort of support extension methods通过扩展类型系统。


IronPython的似乎支持扩展方法...


IronRuby的according to this answer到这个问题, “IronRuby的调用C#扩展方法 - 错误 - 在.NET 3.5兼容性”,支持扩展方法开始1.4版本(需要.NET 4)经由using_clr_extensions


IronSchemedoes have extension methods,但我不能完全确定他们是否是同样的机制在C#扩展方法3.


,根据this answer的问题“我如何在boo中使用扩展方法”,支持从0.9.0版本开始的扩展方法。


Nemerle似乎支持扩展方法,太(根据a page on its website)。


托管C++:(扩大对stakx的答案)托管C++支持扩展方法,你可以在this answer看到。


(请随意扩大和改善这个答案!)