如果我有
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)
有没有一种很好的方式与反思做到这一点?
你需要看看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!");
}