对我而言,在基类中隐藏成员以隐藏某些东西而不是重构糟糕的设计听起来更像是个例外...
也许我错了。但...
使用'new'关键字隐藏基类中的成员是否是代码气味?
答案 0 :(得分:4)
这取决于意图。例如,如果目的是澄清具体的返回类型,则可能并非不合理。这里的经典示例是DbConnection
。 SqlConnection
通过返回CreateCommand
而不是SqlCommand
来重新声明DbCommand
等有用,因为SqlCommand
有许多平台特定的功能,否则将是一个痛苦。关键点在这里,DbConnection
方法仍然有效,两种方法的目的和意义相同。
如果您正在执行此操作并且方法执行不同的操作,或返回不同的内容,则有时会导致混淆。时间它仍然有意义; p如果它们做同样的事情,并且只是通过正式陈述对调用者有用的实现的某些内容而变化,那么很好。
答案 1 :(得分:0)