由於Apple需要預編譯代碼,因此iOS的Mono開發有一定的限制,即不允許JIT編譯。由於這種調用如Reflection.Emit不受支持。但我想知道是否C#動態可以在爲iOS編譯的C#中使用。MonoTouch支持C#動態嗎?
例如:
repository.Find(repository.UserName == 「約翰」);
這裏「repository」是一個靜態方法「Find」和動態屬性「UserName」的動態對象。這種方法適用於所有基於Windows的.NET平臺,我相信它也適用於Mono for Android。但是,MonoTouch呢?原則上,根據運行時信息動態解析動態屬性不應該有任何限制 - 除非可能是蘋果擅長的合法限制。
來自http://tirania.org/monomac/archive/2011/Apr-06.html:*有一個重要限制:C#4.0動態支持不起作用,因爲它需要動態代碼生成才能工作。* –
太可惜了!但並非所有動態都是關於代碼生成的,是嗎?或者蘋果是如此嚴格,以至於禁止任何不會導致預編譯二進制文件的語言語法? 感謝您的澄清。 –
這是我的理解,是的。 Apple預先批准iOS應用程序中的所有代碼;生成的代碼在生成之前不存在,因此它們無法控制它。 –