我将对数据库的访问封装在连接类中,这些连接类都继承自同一个基本实现。这个基本实现有一个protected
用于数据库访问的 LINQ 提供程序,许多子类将使用它——但不是所有子类。有些人可能需要他们自己的提供者,然后通常不会使用“默认”提供者。
这个“其他”提供者不会从默认提供者派生(但共享一个共同的准抽象祖先,它本身在任何地方都没有用),但在相应的类中具有完全相同的角色,所以看起来不错能够以完全相同的方式使用它,即使用相同的语法。我可以通过使用关键字隐藏相应的成员来实现这一点new
,但我不确定这是否是好的做法。
一方面,这样做有助于避免意外使用错误的,因为只有一个。另一方面,习惯于对默认和特定提供者使用相同的名称可能会导致实际上忘记实现特定的提供者并使用此处不正确使用的提供者。因此,适当地命名默认值可能是有意义的;任何将开发特定连接类的人都会知道他们何时需要使用特定的提供者,并被提醒他们需要创建代码来实现这一点。
哪种推理更合理?我现在有点倾向于后者。