如何找出自定义类型使用其方法的BCL类型?

时间:2010-03-19 11:51:52

标签: c#

如果我有一个课程,例如T1,我想知道它正在使用的BCL中的哪些课程,我该怎么做?

我想出了这个:

 T1.GetType().GetMethods().Where(x => x.DeclaringType.Namespace == "System");

但是这将获得我的自定义类型中的所有方法,但我想查看每个方法,所以我希望我可以做类似的事情:

T1.GetType()的getMethods()BodyTypesUsed。检查我的方法是否使用类似Streamwriter的类型。

我怎么能实现这个目标?

4 个答案:

答案 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的建议)。

谢谢你们。