0

この投稿の回答者のアドバイスに従おうとしています: DataAccess プロジェクトのクラスの命名規則は何ですか? (jdk)。

以下のコードを見てください。

'Form1.vb
Imports WindowsApplication1.BusinessLogicLayerShared

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim IPerson As IPerson
        IPerson = New BusinessLogicLayer.Person()
        Dim name As String = IPerson.getName()
    End Sub
End Class

'Person.vb
Imports WindowsApplication1.BusinessLogicLayerShared

Namespace BusinessLogicLayer
    Public Class Person
        Implements IPerson

        Private IPerson As DataLogicLayerShared.IPerson

        Public Function getName() As String Implements IPerson.getName
            IPerson = New DataLogicLayer.Person
            getName = IPerson.getName
        End Function
    End Class
End Namespace

Namespace BusinessLogicLayerShared
    Public Interface IPerson
        Function getName() As String
    End Interface
End Namespace

'Person.vb
Imports WindowsApplication1.DataLogicLayerShared
Namespace DataLogicLayer

    Public Class Person
        Implements IPerson

        Public Function getName() As String Implements IPerson.getName
            'Connect to database and get name
            Return "Ian"
        End Function

        Public Function getAge() Implements IPerson.getAge

        End Function
    End Class
End Namespace

Namespace DataLogicLayerShared
    Public Interface IPerson
        Function getName() As String
        Function getAge()
    End Interface
End Namespace

クライアント (フォーム) はビジネス ロジック層を呼び出し、ビジネス ロジック層はデータ ロジック層を呼び出します。名前 (文字列) は、データ ロジック層からビジネス ロジック層に渡され、クライアントに戻されます。

インターフェイスを参照するときに、名前空間を指定する必要があるという事実が気に入りません。たとえば、Private IPerson As DataLogicLayerShared.IPerson です。参照で名前空間を指定する必要がありますか、それとも採用したパターンを修正してこれを回避できますか?

4

1 に答える 1

1

Imports DataLogicLayerSharedソースファイルの先頭に追加できるはずです。これにより、各クラスを名前空間で完全に修飾する必要がなくなります。

VB .NETの参照と名前空間について詳しくは、こちらをご覧ください。

更新:同じ名前の複数のクラスまたはインターフェースが異なる名前空間にある場合は、上記の例のように、名前空間の前に名前空間を追加して、使用しているクラスを修飾する必要があります。

あなたの場合、おそらくビジネスレイヤーとデータレイヤーのクラスを同じソースファイルに含める必要はありません。コードはサービス(ビジネスロジック)レイヤーを呼び出す必要があり、サービス(ビジネスロジック)レイヤーはデータレイヤーを呼び出します。

于 2013-01-16T20:35:13.523 に答える