我不太确定该怎么做。我创建了一个通用类来为我的应用程序打开报告。报告包含在另一个DLL中,但该DLL未被引用为嵌入式资源。
如果我引用DLL,我可以做:Viewer.LocalReport.ReportEmbeddedResource = "SomeLibrary.ReportName.rdlc";
但是,由于我没有引用DLL,所以我必须通过反射来获取报告。这就是我卡住的地方。我真的不确定该怎么做。
我找到了一种方法,可以通过读取RDLC并返回Stream来实现。
public void PrepareReport(IAppReport report)
{
Viewer.LocalReport.LoadReportDefinition(report.GetStream());
}
有了一点反射,我就能够拉出该Stream对象。
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
Stream streamReport = assembly.GetManifestResourceStream("MyProjectOrAssemblyName.Reports.Report1.rdlc");
reportView1.ProcessingMode = ProcessingMode.Local;
reportView1.LocalReport.LoadReportDefinition(streamReport);