我有一种情况,我需要调用第三方服务来获取一些信息。对于不同的客户,这些服务可能会有所不同。我的界面中有一个身份验证功能,如下所示。
interface IServiceProvider {
bool Authenticate(string username, string password);
}
class ABCServiceProvider : IserviceProvider
{
bool Authenticate(string username, string password) { // implementation}
}
class EFGServiceProvider : IserviceProvider
{
bool Authenticate(string username, string password) { // implementation}
}
等等......现在我遇到了一个服务提供商(比如说 XYZServiceProvider),它需要一些额外的信息(agentid)来进行身份验证。像这样的东西......
class XYZServiceProvider
{
bool Authenticate(string username, string password, int agentid) { // implementation}
}
现在,如果我在我的接口中提供另一个具有 3 个参数的 Authenticate 函数,并在除 XYZServiceProvider 之外的所有类中抛出未实现的异常,这是否违反了接口隔离原则?我在代码的其他一些部分也有类似的情况。谁能告诉我实现这种场景的最佳方法是什么?我真的很感激。