0

ASP.NET Web アプリケーション コード ビハインド クラスに、VB.NET WinForms アプリケーションで再利用したいコードがいくつかあります。コード ビハインド (ASP.NET Web アプリケーション (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

両方のクライアントが使用するサービスレイヤーを作成する方がおそらく良いと思いますが、上記が可能かどうか迷っていますか? つまり、Web アプリケーションのイベント、つまり button.click のイベント ハンドラーを WinForm に追加することは可能ですか?

4

1 に答える 1

3

部分クラスをクリエイティブに使用し、winforms アプリからコード ビハインド クラスを参照することで、これを回避できる可能性があります。

ただし、これは非常に壊れやすい実装になります。たとえば、メニューから同じ機能を提供したい場合や、ボタン コントロールを winforms コントロールと同じ署名を持たないサードパーティ ベンダーのコントロールに変更したい場合、またはその逆の場合です。

サービス レイヤーがなくても、2 つのアプリケーション間で共有され、単にイベント ハンドラーから呼び出されるクラスに共通の機能を移動することは、はるかに優れた方法です。

はい、両方のアプリでイベント ハンドラーを定義する必要がありますが、それはわずかな量のコードであり、プラットフォーム固有のエラー処理を実行することもできます (たとえば、Web アプリでは、 winforms アプリで javascript アラートを表示する場合は、msgbox を介して表示することをお勧めします)。

于 2013-06-02T19:31:09.533 に答える