我们目前正在将Access应用程序大规模转换为.NET前端。许多Access应用程序都有报告和创建RDLC(或Crystal rpt)的方法,以及带有数据集填充和绑定的主机表单很费力。
所以我正在创建一个C#类库来帮助,你给它报告名称,剩下的就完成了。 即目前我可以这样做:
ReportViewer.GetReportViewer("ReportXXX")
.AddParameter("UserID", "a983157")
.SetFormSize(new Size(1024, 768))
.SetFormTitle("My Report")
.SetFormLocation(FormStartPosition.CenterScreen)
.Show();
这适用于内置的RDLC格式,但我希望将其扩展为Crystal。但我知道如果我只是将它添加到同一个类库中,那么我需要分发Microsoft Reporting程序集和Crystal程序集。
所以我希望将它分成3个,一个用于公共代码的lib,然后一个用于Microsoft,一个用于Crystal。消费者不会扩展或添加他们自己的,他们只是给我一个报告名称,我找出它是什么类型,并建立适当的表格。
我认为它是我想要的一个Builder模式,但不确定,Bridge似乎也合适,但它不是一个结构模型,我认为就是我将要做的。
答案 0 :(得分:0)
我认为你其实想要一个Factory design pattern。公共代码将放在基类中,您将从基类中获得两个派生类,一个用于Crystal,另一个用于RDLC。 Factory将根据报告名称返回适当的报告对象实例。
答案 1 :(得分:0)
只是给出一个提示,你需要明白没有规则说你必须坚持一个单一的模式。实际上,单独使用实际意义上的单一设计模式。