我有一个使用reportviewer的网络[表单]应用。在后面的代码中,我的代码如下所示:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim u As New UriTypeConverter
Dim vSDate, vEDate As Date
vSDate = Session("StartDate")
vEDate = Session("EndDate")
If Session("ReportName") = "Report1" Then
Dim reportparameters(1) As ReportParameter
reportparameters(0) = New ReportParameter("StartDate", vSDate)
reportparameters(1) = New ReportParameter("EndDate", vEDate)
ReportViewer1.ServerReport.ReportPath = "/SSRS01/Report1"
ReportViewer1.ServerReport.SetParameters(reportparameters)
End If
If Session("ReportName") = "Report2" Then
Dim reportparameters(1) As ReportParameter
reportparameters(0) = New ReportParameter("StartDate", vSDate)
reportparameters(1) = New ReportParameter("EndDate", vEDate)
reportparameters(2) = New ReportParameter("Product", Session("ProductName"))
ReportViewer1.ServerReport.ReportPath = "/SSRS01/Report2"
ReportViewer1.ServerReport.SetParameters(reportparameters)
End If
大约有12个if语句,有些语句的参数数量不同于其他语句。因此,与必须编写具有不同参数的更多if语句相反。我想知道是否有一个结构,技术,模式可以让我绕过写作我创建的每个新报告的语句。而且我并不关心所需要的东西。数据库,新库,学习5种新的GoF模式。随你。只有要求/限制是[显然]这是一个.NET应用程序。
答案 0 :(得分:1)
最好的办法是用策略模式替换多个If或long switch语句。如何找到here
的好解释你将在这篇关于stackoverflow的讨论中找到另一个很好的例子 - 它在Java上,但是逻辑很清晰,可以用任何.Net语言移植 Converting many 'if else' statements to a cleaner approach