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 回答