在基类中隐藏成员是代码中的一股臭味

本文关键字:一股 隐藏 基类 成员 代码 | 更新日期: 2023-09-27 18:25:50

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

也许我错了。但是

用关键字"new"隐藏基类中的成员是一种代码气味吗?

在基类中隐藏成员是代码中的一股臭味

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

如果您正在执行此操作,并且方法执行不同的操作,或者返回不同的操作[/strong>,则在某些情况下可能会引起混乱。有时它仍然有意义;p如果它们做同样的事情,并且只是通过正式声明对调用方有用的实现来改变,那么就好了。

这可能会有所帮助。http://blogs.msdn.com/b/ericlippert/archive/2008/05/21/method-hiding-apologia.aspx