.net 方法作为属性

.net 方法作为属性,.net,vb.net,webforms,.net,Vb.net,Webforms,我不确定这里的术语是否正确,所以我的搜索没有结果 我有一个类MyClass,它具有ToControls功能。此函数返回一些自定义控件 创建MyClass的实例时,我希望传入一个方法,该方法将绑定到ToControls返回的LinkButton事件的OnClick 以下是一个简化版本: Public Class MyClass Private proAction As Action Public Property Action() As Action Get

我不确定这里的术语是否正确,所以我的搜索没有结果

我有一个类
MyClass
,它具有
ToControls
功能。此函数返回一些自定义控件

创建
MyClass
的实例时,我希望传入一个方法,该方法将绑定到
ToControls
返回的
LinkButton
事件的
OnClick

以下是一个简化版本:

Public Class MyClass

    Private proAction As Action

    Public Property Action() As Action
        Get
            Return proAction
        End Get
        Set(value As Action)
            proAction = value
        End Set
    End Property

    Public Function ToControls() As Object
        Dim htmlWrapper As New HtmlGenericControl("div")

        Dim lnkTest As New LinkButton
        lnkTest.Text = "TEST"
        AddHandler lnkTest.Click, AddressOf Action.Method.Name
        ' ## Error: 'AddressOf' operand must be the name of a method (without parentheses)

        htmlWrapper.Controls.Add(lnkTest)

        Return htmlWrapper
    End Function

End Class
我的代码隐藏看起来像这样:

Protected Sub MySub()
    Dim myObj As New MyClass
    myObj.Action = AddressOf MyPassedSub
End Sub

Protected Sub MyPassedSub()
    Response.Write("Hello World!")
End Sub
我遇到了我认为可以用于此的
操作
,但我怀疑我错了


如何实现这一点?

公共属性Ctlevent As EventHandler
应该是您所需要的全部(自动实现的属性)。用于类存储。它实际上不需要是一个属性,但可以只是一个公共成员,或者更好,除非您确实想要获取它并设置它,在构造函数中传递处理程序的地址并将其存储为私有变量。您可能希望
ToControl
方法返回
Control
thoughHi@puropoix。谢谢你的意见。这可能是我的实现有问题,但我无法做到这一点。我已经将
公共属性CtrlEvent添加为EventHandler
MyClass
中,现在从
objN.CtrlEvent=AddressOf NotificationAction
后面的代码设置它。这将生成并运行,但单击LinkButton时不会调用my Sub。我刚收到一封回信。有什么想法吗?当你创建控件时,你是否
AddHandler myObj.,CtrlEvent
主要的错误是委托处理。确保事件处理程序(子)签名正确(
sender As Object,e As EventArgs
)我基本上是这样做的:。对您来说,这看起来正确吗?它看起来基本正确,除了您的控件工厂只存在于
MySub
中,并且在该范围内没有任何地方可以调用
ToControl
方法来创建控件。否则这应该行得通