1

私はしばらくの間、さまざまな Web ベースのプログラムやものを構築してきましたが、.NET はまったく初めてで、「適切に」物事を行っています。私は完全に独学なので、このようなサイトなどの助けを借りて、基礎の理解は限られています.

したがって、入力されたパラメーターに応じて必要なデータを返す一連の関数があります。これは非常に基本的なものであり、明らかにすべて機能します。ただし、クラスを使用してこれらの関数を簡単に呼び出せるようにしています。

DropDownListしたがって、入力されたものを HTML 文字列に変換して返す関数があるとします。

Function GetList(ListRequired as String) as String
    ' Do stuff to return a dropdownlist whos contend is determined by `ListRequired`, converted to an HTML string
End Function

この例では問題なく動作しますが、それを使用するには、必要なものを取得するために "ListRequired" に何を入力すればよいかを知っておく必要があります。

たとえば、ListRequiredpara のオプションは「mastercategory」、「brandlist」、「priceranges」であり、異なるリストのセットを返します。各オプションは、データベースから取得した情報からコードを送信し、それに応じて返します。

サードパーティの開発者が必要な最も基本的な量の「命令」でこの関数を呼び出せるようにListRequiredし、クラスとして利用可能にすることで利用可能なリストを伝える必要さえないようにしたいとします。

Public Class DropDownLists

    Public Property MasterCategory
    Public Property BrandList
    Sub New()
        Me.MasterCategory = HTMLControls.RenderSearchFilters("mastercategory")
        Me.BrandList = HTMLControls.RenderSearchFilters("brandList")
    End Sub

End Class

開発者は、Visual Studio/VWD などから非常に簡単にこれを呼び出すことができます。

Dim dd As New DropDownLists
Dim list1Html as String = dd.MasterCategory 
Dim list2Html as String = dd.BrandList

VWD などはすべての便利なヘルパーを作成し、クラスが公開するプロパティを表示するため、このコードを使用するのは非常に簡単で、常にマニュアルを参照する必要はありません。

ただし...クラスの新しいインスタンスを作成する場合:

Dim dd As New DropDownLists

これにより、サーバーはプロパティを作成するクラス内のすべての関数を処理することになりますが、プロパティが多数ある場合は非常に非効率的です。

だから私はロジックの私自身の解釈を使用して、これを書いてみました:

Public Class DropDownLists

    Shared Property Master
    Shared Property Brand
    Sub New()
    End Sub

    Public Class MasterCategory 
        Sub New()
            DropDownLists.Master = HTMLControls.RenderSearchFilters("mastercategory")
        End Sub
    End Class

    Public Class BrandList
        Sub New()
            DropDownLists.Brand = HTMLControls.RenderSearchFilters("brandList")
        End Sub
    End Class

End Class

次のようなマスター カテゴリ ドロップダウンの HTML を作成できることを願っています。

Dim dd as New DropDownLists.MasterCategory

しかし、それは機能しません。よく考えてみると、理由がわかると思います...文字列を返すのではなく、新しい型を作成しています。

だから...私の質問は...

私が探しているものを達成する正しい方法は何ですか。つまり、入力してこれらの文字列出力を作成できるようにすることです

Dim dd As New DropDownLists
Dim list1Html as String = dd.MasterCategory 
Dim list2Html as String = dd.BrandList

未知の可能性のある文字列パラメーターを渡す必要がなく、クラスが作成されるたびにすべてのプロパティが作成されることもありませんDropDownLists。つまり、必要な出力のコードのみを実行します。

4

1 に答える 1

2

コメントを拡張して、私が何を意味したかをより明確に理解できるようにします。

   Public Class DropDownLists
    Enum ListType
        Undefined
        MasterCategory
        Brandlist
    End Enum


    Public Shared Function GetList(ListRequired As ListType) As String

        Select Case ListRequired
            Case ListType.Brandlist
                Return . . . 
            Case ListType.MasterCategory
                Return . . .
            Case ListType.Undefined
                Throw New . . . .
        End Select


    End Function

End Class
于 2013-10-17T12:26:12.033 に答える