VB.NET - 在代码中重用代码

时间:2013-06-02 17:00:07

标签: asp.net vb.net design-patterns

我希望在VB.NET WinForms应用程序中重用一个ASP.NET Web应用程序代码后面的代码。请从后面的代码(ASP.NET Web应用程序(而不是网站))中查看以下代码:

Public Class _Default
    Inherits System.Web.UI.Page

    Private Sub button1_Click(sender As Object, e As System.EventArgs) Handles button1.Click
        MsgBox("button1.click")
    End Sub
End Class

和背后的代码:

Imports WebApplication1

Public Class TestClass
    Public Shared Sub Test100()
        MsgBox("button clicked on page")
    End Sub
End Class

Public Class Form1

    Public Event BellRings(ByVal sender As Object, ByVal e As EventArgs)
    Public test As String

    public Shared TestMethod()
      MsgBox("Test Method was called")
    End public

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Try
            Dim d As WebApplication1._Default = New WebApplication1._Default
            AddHandler d.button1.Click, AddressOf Form1.TestMethod
        Catch ex As Exception

        End Try
    End Sub
End Class

我意识到创建一个服务层可能会更好,这两个客户都使用,但是如果上述情况可能,我会徘徊?即是否可以在WinForm中为Web应用程序中的事件添加事件处理程序,即button.click?

1 个答案:

答案 0 :(得分:3)

您可以通过创建使用部分类并从winforms应用程序引用代码隐藏类来逃避这一点。

然而,这将是一个非常脆弱的实施。例如,如果您想通过菜单提供相同的功能,或者想要将按钮控件更改为与winforms控件具有相同签名的第三方供应商控件,反之亦然。

即使没有服务层,更好的方法是将公共功能移动到两个应用程序之间共享的类中,并且只需从事件处理程序中调用。

是的,您必须在两个应用程序中定义事件处理程序,但这是一个微不足道的代码量,并且还允许您执行特定于平台的错误处理(例如,在Web应用程序中,您可能希望显示在winforms应用程序中通过javascript警报异常,您可能希望通过msgbox显示它。