2013-05-16 59 views
2

由於Apple需要預編譯代碼,因此iOS的Mono開發有一定的限制,即不允許JIT編譯。由於這種調用如Reflection.Emit不受支持。但我想知道是否C#動態可以在爲iOS編譯的C#中使用。MonoTouch支持C#動態嗎?

例如:

repository.Find(repository.UserName == 「約翰」);

這裏「repository」是一個靜態方法「Find」和動態屬性「UserName」的動態對象。這種方法適用於所有基於Windows的.NET平臺,我相信它也適用於Mono for Android。但是,MonoTouch呢?原則上,根據運行時信息動態解析動態屬性不應該有任何限制 - 除非可能是蘋果擅長的合法限制。

+3

來自http://tirania.org/monomac/archive/2011/Apr-06.html:*有一個重要限制:C#4.0動態支持不起作用,因爲它需要動態代碼生成才能工作。* –

+1

太可惜了!但並非所有動態都是關於代碼生成的,是嗎?或者蘋果是如此嚴格,以至於禁止任何不會導致預編譯二進制文件的語言語法? 感謝您的澄清。 –

+1

這是我的理解,是的。 Apple預先批准iOS應用程序中的所有代碼;生成的代碼在生成之前不存在,因此它們無法控制它。 –

回答

3

最後我檢查了,由於Apple禁止JIT,因此不支持動態。在Android Xamarin工具中,您可以利用動態關鍵字,但Apple需要預編譯的代碼。在這些工具中有一個很棒的.NET Rocks播客,用這些工具描述了使用這些不同平臺的概述。

+2

謝謝。並感嘆:-( –