【发布时间】:2019-04-15 23:36:28
【问题描述】:
阅读了大量关于使用反射获取给定类中的方法列表的帖子,但我仍然无法获得该列表,需要寻求帮助。这是我当前的代码:
Function GetClassMethods(ByVal theType As Type) As List(Of String)
Dim methodNames As New List(Of String)
For Each method In theType.GetMethods()
methodNames.Add(method.Name)
Next
Return methodNames
End Function
我这样称呼这个方法:
GetClassMethods(GetType(HomeController))
return 有 43 个方法,但我只想要我在类中写的方法。下图显示了返回内容的开头。我声明的方法在此列表中,但位于位置 31-37。实际上有 9 个声明的方法,但是这个列表没有显示 Private 方法。
当我查看theType 时,我看到了我想要的属性。它是DeclaredMethods,它显示了每个声明的方法,公共的和私有的。
但是,我无法使用这样的语句访问此属性。
Dim methodList = theType.DeclaredMethods
返回的错误是DelaredMethods不是Type的成员。所以,我的问题是多方面的:
1) 最重要的是,我需要什么代码来检索类中每个声明的方法,并且只检索我声明的方法?
2) 为什么我无法访问提供 DeclaredMethods() 列表的属性?
【问题讨论】:
-
看看this:List (top-level) declared variables in a Windows Form和BindingFlags的使用。该过程用于提取声明的字段。您可以对其进行调整以提取您需要的任何内容。
-
theType.DeclaredMethods似乎是一个属性而不是一个方法,所以你必须省略()。 -
@thehennyy 这是我在帖子中的错误,我不小心添加了
(),但我并没有真正使用它们。该属性根本不会出现在 Intellisense 中,尽管这种情况有时很少发生。我更正了帖子。
标签: vb.net reflection