5

如果我有

class A
{
   public void DoStuff()
   {
      B b;
   }
}

struct B {}
struct C {}

typeof(A)

我想获得 A 使用的所有类型的列表。在这种情况下,它会是typeof(B) 而不是typeof(C)

有没有一种很好的方法可以通过反射来做到这一点?

4

1 回答 1

8

您需要查看MethodBody类(在链接中有一个很好的使用示例)。这将让您编写如下代码:

MethodInfo mi = typeof(A).GetMethod("DoStuff");
MethodBody mb = mi.GetMethodBody();
foreach (LocalVariableInfo lvi in mb.LocalVariables)
{
    if (lvi.LocalType == typeof(B))
        Console.WriteLine("It uses a B!");
    if (lvi.LocalType == typeof(C))
        Console.WriteLine("It uses a C!");
}
于 2012-07-31T11:39:30.900 回答