c# - 获取特定类中使用的类型

标签 c# class reflection types

这是该类,我想获取其中使用的所有类型的列表:

public class TestClass : MonoBehaviour{
    private UIManager _manager;

    private void Initialize(UIManager manager){
        _manager = manager;
    }
}

然后我想通过运行这样的东西:

    Assembly assembly = typeof (TestClass).Assembly;
    foreach (Type type in assembly.GetTypes()){
        Debug.Log(type.FullName);
    }

只会给我 UIManager 类型。但它似乎给了我项目中使用的所有类型的列表。

我怎样才能得到这个类中使用的类型?

(如您所见,TestClass 继承自 MonoBehaviour,但我不想要那里使用的类型,我想要 TestClass 中专门使用的类型)。

最佳答案

如果您想知道用于方法/文件/属性的类型 - 使用基本反射来枚举声明中使用的每个方法/字段和抓取类型。

即对于你调用的方法 Type.GetMethods而不是挖掘 MethodInfo类似 MethodInfo.ReturnType 的属性获取使用过的类型。可能通过每个基类/接口(interface)递归地向下查找所有依赖项。

如果您想知道方法内部使用了哪些类型,您需要使用某种 IL 解析器,因为反射不提供查看方法主体的方法。 sample 可在 Get types used inside a C# method body 中找到.

请注意,现有工具已经提供了类似的功能 - 即 ReSahrper 具有“根据模块查找代码”和“查找类型/方法/...的用法”。

关于c# - 获取特定类中使用的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29520792/

相关文章:

c++ - 在可以创建彼此实例的不同类之间共享静态数据成员

C#接口(interface)继承

java - 如何在反射中使用递归?

c# - 使用按钮选择 Telerik 网格 - MVVM

Winforms DragDrop 的 C# DragEnter 事件

c# - Fluent NHibernate - 查询派生类

java - 将 Vufoira 场景导入 native android 应用程序

用于添加/删除按钮类的 jQuery/ajax 脚本不起作用

c++ - 错误 : expected initializer before '.' token

java - 动态加载类并获取带注释的类