Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择GoF模式_C#_Design Patterns - Fatal编程技术网

C# 选择GoF模式

C# 选择GoF模式,c#,design-patterns,C#,Design Patterns,我们目前正在进行Access应用程序到.NET前端的大规模转换。许多Access应用程序都有报告和创建RDLC(或Crystal rpt)的方法,而带有数据集填充和绑定的宿主表单则很费劲 因此,我创建了一个C#类库来提供帮助,您为它指定报告名称,它完成其余的工作。 i、 e.目前我可以做: ReportViewer.GetReportViewer("ReportXXX") .AddParameter("UserID", "a983157") .SetFormSize

我们目前正在进行Access应用程序到.NET前端的大规模转换。许多Access应用程序都有报告和创建RDLC(或Crystal rpt)的方法,而带有数据集填充和绑定的宿主表单则很费劲

因此,我创建了一个C#类库来提供帮助,您为它指定报告名称,它完成其余的工作。 i、 e.目前我可以做:

   ReportViewer.GetReportViewer("ReportXXX")
      .AddParameter("UserID", "a983157")
      .SetFormSize(new Size(1024, 768))
      .SetFormTitle("My Report")
      .SetFormLocation(FormStartPosition.CenterScreen)
      .Show();
这适用于内置的RDLC格式,但我希望将其扩展到Crystal。但是我知道,如果我只是将它添加到同一类库中,那么我将需要分发Microsoft Reporting程序集和Crystal程序集

所以我想把它分成3个库,一个用于公共代码,一个用于Microsoft,一个用于Crystal。消费者不会扩展或添加他们自己的报表,他们只会给我一个报表名称,然后我计算出它是什么类型,并构建适当的表单


我想这是我想要的建筑模式,但不确定,这座桥看起来也很合适,但它不是一座建筑模式,我想这就是我要做的。

我想你实际上想要一座。公共代码将放在一个基类中,您将有两个来自基类的派生类,一个用于Crystal,一个用于RDLC。工厂将根据报告名称返回相应的报告对象实例

为了给你一个提示,你需要明白,没有规则规定你必须坚持一种模式。实际上,没有一种实用意义上的设计模式是单独使用的