2012-07-17 162 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看到。


(請隨意擴大和改善這個答案!)