【发布时间】:2021-05-15 20:23:25
【问题描述】:
编译器将 LINQ 函数谓词转换为名称为“Predicate`1”的 FieldInfo。我想分析这些 FieldInfo 以查看引用了哪些成员(如果有)。例如下面的谓词使用用户定义的方法“ArchName”:
list.FindAll(m => !m.ArchName().Contains("<>c"))
我不知道 FieldInfo 有任何相关的 MethodInfo 成员。可以做什么?
提前致谢!
【问题讨论】:
-
会不会是扩展方法?
-
@HansKesting 我不喜欢使用第三方资源。你有什么想法?
-
扩展方法不需要是第三方,可以在项目的其他地方定义。在 Visual Studio 中,将光标放在该方法上并按 F12
-
ArchName() 是一个扩展方法,是的。
-
您必须解析方法体,然后解析找到的令牌。看看这里:stackoverflow.com/a/33034906/4035472
标签: c# reflection metadata cil