【发布时间】:2013-11-14 16:28:19
【问题描述】:
我有一个继承层次结构,其中包含一个名为 Transaction 的超类。我在我的一个类中将它用作变量,但我无法将其转换为特定类型,例如GameTransaction、ScienceTransaction 等。
每个特定类型都有特定的属性,所以我必须通过typeof 检查它是否是那个类型然后转换它,所以我最终得到If.. else if.. 等等,具体取决于@987654326 有多少派生类@。
这很烦人。有没有其他方法可以解决这个问题?有什么设计模式吗?
【问题讨论】:
-
听起来像是设计问题。将适用于通用
Transactions 的代码与适用于GameTransaction等的代码分开。更具体代码的调用者应该知道它正在处理的事务类型。当然,如果没有看到您要完成的工作,就很难确定。 -
你为什么用
c#和java标记这个?你用的是哪个? -
感谢我使用 c# 的伙计们,但如果 java 程序员至少体验过这一点.. Griffey 我的超类事务正在我的外观(设计模式)类中使用,所以每次有方法或服务涉及或需要转换为特定类型我遭受 If.. Else IF.. Else IF.... 检查然后转换为特定类型以以任何其他方式访问该属性或属性?
标签: c# java oop design-patterns inheritance