确定由使用反射在c#某种类型中使用的所有类型的(Determining all types used

2019-07-30 16:52发布

如果我有

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

struct B {}
struct C {}

我有typeof(A)

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

有没有一种很好的方式与反思做到这一点?

Answer 1:

你需要看看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!");
}


文章来源: Determining all types used by a certain type in c# using reflection
标签: c# reflection