给定两种 .Net 类型,类型 A 和类型 B,如何确定从类型 B 对类型 A(包括类型 A 的子类)的所有属性调用?
4 回答
5
您必须找到所有可执行成员(方法、属性、事件、构造函数)并调用MethodInfo.GetMethodBody以获取原始 IL。然后解析该 IL 并查找对属性的访问。不要忘记在基类中声明虚方法。
祝你好运 - 6 个月后见!说真的,这并不容易,听起来像是一个不寻常的要求。这里的大局是什么?
如果您不需要在执行时执行此操作,而只是想查看依赖项,您可能会发现NDepend会为您提供帮助。(哎呀,也许 NDepend 公开了一个 API,您可以在执行时使用它 - 我想值得检查一下。)
于 2009-02-07T08:27:21.237 回答
1
根据 Patrick Smacchia 的博客中的这篇博客条目Mono.Cecil vs. System.Reflection,NDepend 使用Mono.Cecil来分析程序集。
也许它可能有用。
于 2009-02-07T08:50:44.560 回答
0
您可以使用 StackFrame 和 StackTrace 类来做到这一点,但这通常被认为是一种不好的做法。
于 2009-02-07T08:11:28.773 回答