隐藏在基类中的成员在代码中有难闻的气味吗?

时间:2012-02-27 09:05:22

标签: c# .net new-operator member-hiding

对我而言,在基类中隐藏成员以隐藏某些东西而不是重构糟糕的设计听起来更像是个例外...

也许我错了。但...

使用'new'关键字隐藏基类中的成员是否是代码气味?

2 个答案:

答案 0 :(得分:4)

这取决于意图。例如,如果目的是澄清具体的返回类型,则可能并非不合理。这里的经典示例是DbConnectionSqlConnection通过返回CreateCommand而不是SqlCommand来重新声明DbCommand有用,因为SqlCommand有许多平台特定的功能,否则将是一个痛苦。关键点在这里,DbConnection方法仍然有效,两种方法的目的和意义相同。

如果您正在执行此操作并且方法执行不同的操作,或返回不同的内容,则有时会导致混淆。时间它仍然有意义; p如果它们做同样的事情,并且只是通过正式陈述对调用者有用的实现的某些内容而变化,那么很好。

答案 1 :(得分:0)