0

コンストラクターのメソッドによって生成される次のプロパティを持つクラスがあります。

Public Class clsLoadTables
    Private _ds As New DataSet
    Public Property ds() As DataSet
        Get
            Return _ds
        End Get
        Set(ByVal value As DataSet)
            _ds = value
        End Set
    End Property

    Sub New()

        Try
            loadCSVTableII()
            loadXMLFiles(pathMainTable, "MainRMDTable")
            loadXMLFiles(pathBeneLifeExp, "pathBeneLifeExp")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Throw
        End Try

    End Sub

End Class

私の問題は、このクラスを継承したくないということですが、ds DataSet プロパティにアクセスする必要がある他のクラスがあります。可能な限り、継承を使用せず、データテーブルをプログラムに複数回ロードしないようにしたいと考えています。

clsLoadTables を継承していない別のクラス内のプロパティにアクセスしようとして失敗したのは次のとおりです。

        Dim tableRow As DataRow = ds.Tables("MainRMDTable").Select(String.Format("age={0}",  age.ToString()))(0)

クラス継承やグローバルモジュールを使用せずに、多くのクラスからプログラムで一度だけロードしたいこのデータセットにアクセスする方法についてのアイデアはありますか?

4

3 に答える 3

3

パブリック プロパティとして持っているので、clsLoadTables クラスのインスタンスへの参照があればアクセスできるはずです。

Dim foo As New clsLoadTables

Dim tableRow As DataRow = foo.ds.Tables("MainRMDTable").Select(String.Format("age={0}",  age.ToString()))(0)
于 2012-04-07T00:45:23.290 に答える
1

VB.Netのグローバルスコープの場合は、PUBLIC変数とPUBLICメソッドまたはフレンド変数を含むMODULEを使用します。

Public _ds As New DataSet

また

Friend _ds As New DataSet

私があなたの質問を誤解しなかったことを望みます。

于 2012-04-07T00:38:16.000 に答える
1

通常、このようなことに対して私が行うこと_dsは、クラスを変更して、プロパティの最初にアクセスsharedしたときにデータをロードすることです。get

于 2012-04-07T14:34:09.303 に答える