【发布时间】:2008-09-25 16:03:51
【问题描述】:
现在,我的代码看起来像这样:
Private Sub ShowReport(ByVal reportName As String)
Select Case reportName
Case "Security"
Me.ShowSecurityReport()
Case "Configuration"
Me.ShowConfigurationReport()
Case "RoleUsers"
Me.ShowRoleUsersReport()
Case Else
pnlMessage.Visible = True
litMessage.Text = "The report name """ + reportName + """ is invalid."
End Select
End Sub
有没有什么方法可以创建代码来使用我的方法命名约定来简化事情?这是一些描述我正在寻找的伪代码:
Private Sub ShowReport(ByVal reportName As String)
Try
Call("Show" + reportName + "Report")
Catch ex As Exception
'method not found
End Try
End Sub
【问题讨论】:
-
你确定用字符串重写任何调用你的函数不会更容易吗?
-
你可以用反射来做类似的事情,但我认为你的代码会更难看。你会有多少这样的?我认为您最好使用某种形式的命令模式,其中您的枚举字符串是命令的名称!
-
非常正确。我认为我们正在寻找好的方法来构建一些不太好的东西。
-
我不确定你用字符串重写的意思。
-
如果方法的数量至少超过 20..30,反射将是一个好的解决方案。
标签: .net vb.net method-call