IOS上的反射是部分支持,支持使用反射读取源代码,但不支持使用反射动态生成可执行代码,
下面是限制反射的命名空间:
Profiler
Reflection.Emit
Reflection.Emit.Save functionality
COM bindings
The JIT engine
Metadata verifier (since there is no JIT)
实施序列化和反序列化只是使用了反射机制去动态创建已经在编译时刻通知的类型,但不支持动态类型的创建,所以JSON的序列化和反序列化可以在IOS上执行。
换句话说IOS支持的是Reflection的命名空间的部分方法,但不代表支持Emit下的命名空间的方法,总而言之,IOS不支持以动态方式创建新的方法和类型。
关于Reflection.Emit的详细说明
http://www.cnblogs.com/cuihongyu3503319/archive/2009/12/01/1614298.html
http://docs.xamarin.com/guides/ios/advanced_topics/limitations/