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 に答える