我正在导出报告,并且我注意到我正在为每个报告复制大量代码。我想把它放在一个单独的类的方法中,但我不确定在经过一些研究之后如何去做实例化。我的代码如下:c#使用反射动态实例化
ActiveReport rpt = new Reports.rptContractListing_Merchant();
rpt.Run();
try
{
rpt.Run(false);
}
catch (DataDynamics.ActiveReports.ReportException eRunReport)
{
// Failure running report, just report the error to the user:
Response.Clear();
Response.Write("<h1>Error running report:</h1>");
Response.Write(eRunReport.ToString());
return;
}
XlsExport xls = new XlsExport();
xls.MinColumnWidth = (float)0.5;
xls.Export(rpt.Document, m_stream);
m_stream.Position = 0;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "inline; filename=ContractListing_Merchant.xls");
System.IO.MemoryStream m_stream = new System.IO.MemoryStream();
Response.BinaryWrite(m_stream.ToArray());
Response.End();
这里是我不确定与反射部分:
ActiveReport rpt = new Reports.rptContractListing_Merchant();
又如:
ActiveReport rpt = new Reports.rptContractDetails();
try
{
rpt.Run(false);
}
catch (DataDynamics.ActiveReports.ReportException eRunReport)
{
// Failure running report, just report the error to the user:
Response.Clear();
Response.Write("<h1>Error running report:</h1>");
Response.Write(eRunReport.ToString());
return;
}
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "inline; filename=ContractDetails.pdf");
PdfExport pdf = new PdfExport();
System.IO.MemoryStream memStream = new System.IO.MemoryStream();
pdf.Export(rpt.Document, memStream);
Response.BinaryWrite(memStream.ToArray());
Response.End();
你的意思是你想要一个函数接受一个类型为'Reports.rptContractListing_Merchant'的对象,然后运行其余的函数? – Rup 2011-05-24 16:00:16
您可能想向我们展示来自*两个*报告的代码,因此我们可以看到它的哪些部分是重复的,并且可以给出代码重构它的最佳方式的代码示例。这也适用于http://refactormycode.com – StriplingWarrior 2011-05-24 16:06:35
@rup是的,那正是我想要做的。 – 2011-05-24 16:08:58