如何在应用程序中获得通过反射解析的每个程序集、名称空间和类的列表?

本文关键字:程序集 空间 列表 应用程序 反射 | 更新日期: 2023-09-27 18:17:42

我需要在Unity3d中使用iOS构建设置,从字节码中剥离未使用的类,但因为它使用静态分析来发现要删除的类-因此通过反射解析的任何类都不会被排除在删除之外,除非显式添加到排除列表中。我设法在我自己的代码中删除了反射的所有用途,但Mono本身似乎使用基于反射的配置来做一堆东西,我已经在排除列表中添加了大约十几个类,但现在我到了异常没有给出任何线索的地方,需要排除哪些类才能工作。

我的问题是,是否有可能在应用程序使用的每个程序集中通过反射解析得到所有类(带有源程序集和名称空间)的精确列表,您将如何做到这一点?我有Visual Studio 2012,虽然我知道它有强大的调试工具,但我不知道我该如何使用它们来达到这个目的。

谢谢。

如何在应用程序中获得通过反射解析的每个程序集、名称空间和类的列表?

短版

你不能,因为没有办法找到所有的查找通过反射使用静态分析。

长版本

我编写的代码根据用户输入选择一个类,例如在伪代码中:

string action = ... ; // get some user input here, e.g. "Fire"
string clazz = "Do" + action;
var obj = Activator.CreateInstance("MyActions", clazz);

可以看到,实际的完整类名在代码中的任何地方都没有出现。因此,您需要以各种可能的方式执行代码,以找出clazz变量可以假定哪些值。因此,您无法找出该代码将通过反射访问哪些类。

<

进一步问题/strong>

你使用Mono的确切API是什么,你得到了什么样的异常?