如果我有
class A
{
public void DoStuff()
{
B b;
}
}
struct B {}
struct C {}
我有一个typeof(A)
,
我想要获取A所使用的所有类型列表。在这种情况下,它将是typeof(B)
而不是typeof(C)
。
有没有一种很好的反射方式来做到这一点?
如果我有
class A
{
public void DoStuff()
{
B b;
}
}
struct B {}
struct C {}
我有一个typeof(A)
,
我想要获取A所使用的所有类型列表。在这种情况下,它将是typeof(B)
而不是typeof(C)
。
有没有一种很好的反射方式来做到这一点?
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!");
}
Type.GetFields
,Type.GetProperties
(或Type.GetMembers
)等方法,获取类型A
的所有成员很容易。但是确定一个方法内部使用了哪些类型?就不太确定了。 - Chris Sinclair