0

我有个问题。我正在使用 VSTO C# 并使用 MailItem 对象和 AppointmentItem 对象。目前,我为它们中的每一个都有基本相同的课程。唯一的区别是 MailItem 类在其逻辑中使用 MailItem 对象,AppointmentItem 也是如此。

我想以某种方式“合并”这些类,所以我只需要维护一个代码。以下是我尝试的一些选项:

  • 我尝试使用重载,但它仍然导致两个函数,所以它或多或少与以前的场景相同。

    我尝试使用“动态”参数创建单个方法,但在使用 Linq 时会导致语法错误。

    最后,我尝试使用 var,但无济于事,因为我需要在 if-else 语句中声明它,并且它的作用域卡在那里。

如果这可能,有人有什么建议吗?

提前致谢!

4

1 回答 1

0

有时,由于严格的类型规则,该语言需要单独实现算法。在这些情况下,您可以做的最好的事情是在您的文档中宣布算法的设计是相同的,并确保将来保持这种并行性。

然而,在重构的世界里,一个通用的超类并不是做到这一点的唯一方法。我强烈推荐 Martin Fowler 的工作:http ://refactoring.com/ 。

你没有说你用什么语言实现它,所以我假设它是一种静态类型的语言,而不是像 Smalltalk 这样的语言。您可能会考虑访问者模式,但这对于仅两个类来说可能是多余的。委托模式或代理模式也可以工作。

我找到了一个有用的 Proxy、Facade 和 Adaptor 比较页面:http: //www.netobjectivestest.com/PatternRepository/index.php? title=AdapterVersusProxyVersusFacadePatternComparison

于 2013-06-02T13:19:37.423 回答