如果我有一个课程,例如T1,我想知道它正在使用的BCL中的哪些课程,我该怎么做?
我想出了这个:
T1.GetType().GetMethods().Where(x => x.DeclaringType.Namespace == "System");
但是这将获得我的自定义类型中的所有方法,但我想查看每个方法,所以我希望我可以做类似的事情:
。T1.GetType()的getMethods()BodyTypesUsed。检查我的方法是否使用类似Streamwriter的类型。
我怎么能实现这个目标?
答案 0 :(得分:1)
好吧,你可以调用MethodBase.GetMethodBody
- 这可以让你看到局部变量的类型。我不知道它是否会向你显示任何“偶然使用”的类型......
(当然,您也可以使用参数类型以及返回类型。)
答案 1 :(得分:0)
如果不解析IL代码,我认为不可能。
答案 2 :(得分:0)
现在来看看Redgate的Reflector.NET。它允许您导航程序集的内容并将IL反汇编为C#,VB.NET和其他.NET语言。
它还允许您选择一种类型并以多种方式对其进行分析,包括您所追求的事物。
它是免费的。
答案 3 :(得分:0)
我想出了以下内容:
MethodInfo mi = typeof(Class1).GetMethod("s1");
MethodBody mBody = mi.GetMethodBody();
这让我可以检查方法体并明显看到正在使用的内容(类似于Jon的建议)。
谢谢你们。