gpt4 book ai didi

.net - 如何获取方法 (.NET) 中使用的字段?

转载 作者:行者123 更新时间:2023-12-02 19:49:41 29 4
gpt4 key购买 nike

在 .NET 中,使用反射如何获取方法中使用的类变量?

例如:

class A
{
UltraClass B = new(..);
SupaClass C = new(..);

void M1()
{
B.xyz(); // it can be a method call
int a = C.a; // a variable access
}
}

注意:GetClassVariablesInMethod(M1 MethodInfo) 返回 B 和 C 变量。我所说的变量是指该特定变量的值和/或类型和构造函数参数。

最佳答案

有很多不同的答案,但由于没有一个答案对我有吸引力,所以这是我的。它正在使用我的 Reflection based IL reader .

这是一个检索方法使用的所有字段的方法:

static IEnumerable<FieldInfo> GetUsedFields (MethodInfo method)
{
return (from instruction in method.GetInstructions ()
where instruction.OpCode.OperandType == OperandType.InlineField
select (FieldInfo) instruction.Operand).Distinct ();
}

关于.net - 如何获取方法 (.NET) 中使用的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1435474/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com