2013-05-16 58 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

谢谢。并感叹:-( –