从MethodInfo对象获取AddressOf

时间:2016-10-26 20:22:31

标签: vb.net

我有以编程方式创建的标签,并希望为每个标签提供特定的事件处理程序。所以,而不是这样做:

AddHandler Label1.Click, AddressOf SomeSub1
AddHandler Label2.Click, AddressOf SomeSub2
AddHandler Label3.Click, AddressOf SomeSub3
...

我希望将它用于循环以避免上述情况。所以我做了:

  • 标签清单
  • 一个MethodInfo数组,其中包含我所有已构建的私有子类,该类继承自标签所在的主类

我使用了以上内容并提出了以下内容:

Dim separateClass As New SeparateClass
Dim methodInfo() As MethodInfo = separateClass.GetType.GetMethods(BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly)

For i As Integer = 0 to End
    labelList.Add(New Label())
    AddHandler labelList.Last.Click, AddressOf [Delegate].CreateDelegate(GetType(SomeDelegate), separateClass, methodInfo(i)).GetMethodInfo
Next

这确实可以编译,但是没有触发Subs。以下也编译但行为相同:

For i As Integer = 0 to End
    labelList.Add(New Label())
    AddHandler labelList.Last.Click, AddressOf methodInfo(i).getBaseDefinition
Next

有没有办法可以从AddressOf对象中获取相应的MethodInfo

1 个答案:

答案 0 :(得分:1)

[Delegate].CreateDelegate已经创建了一个委托对象;你不应该使用AddressOf

你可能需要施放它。