我在Windows / WindowsPhone和iOS上都有一个使用xamarin用c#编写的应用程序。有许多游戏关卡的帮助类,一个类的所有函数,我使用反射实例化它们:
string className = string.Format(CultureInfo.InvariantCulture, "myapp.helper{0:0000}", num);
var t = Type.GetType(className);
if (t != null)
cmis = Activator.CreateInstance(t);
在Windows版本的应用程序中,它可以正常工作,但在iOS版本中,Type.GetType(className)返回null。如果我实例化另一个类的对象,它直接在我的应用程序中使用,则返回其类型。但问题是有几百个这样的小类,它们只用于反射,所以我认为xamarin版本的.NET编译器甚至在DEBUG中删除了我的类,因为它认为它们完全没用。
“优化”检查已关闭。类在同一个程序集中,但我尝试使用程序集限定名称 - 没有成功。 有没有办法添加一些编译指示或其他东西,使编译器的行为与它在Windows应用程序中的工作方式相同?我想只保留名称模板“helperXXXX”的“未使用”类,其他未使用的类可能会被删除。