是否可以按如下方式实现以下2个接口?这段代码编译但在阅读了如何实现这些之后,我不确定这是否有用。
Interface1
{
Authorize(string p1, int p2);
LookupCode(int test);
GetObject(int ID);
}
Interface2
{
Authorize(string p1);
LookupCode(int test);
GetObject(int ID);
}
class WebService : Interface1, Interface2
{
Authorize(string p1, int p2)
{
}
Authorize(string p1)
{
}
LookupCode(int test)
{
}
GetObject(int ID)
{
}
}
由于Authorize方法具有不同的签名,它们是否可以正确映射到正确的接口?
其他相同的方法具有相同的实现,并且WebService类中只有一个实例。那么这也可以吗?
答案 0 :(得分:4)
由于Authorize方法具有不同的签名,它们是否可以正确映射到正确的接口?
绝对。事实上,为什么它们可以正确地映射到它自己的接口,而不是另外两个方法,它们同时映射到两个接口。
注意:您的代码有明显的语法错误。但是,由于您提到您的代码已编译,我认为您的实际代码已修复这些错误。
答案 1 :(得分:0)
如果您确实希望在两个接口中使用相同的方法实现不同的实现,则应使用显式接口:
interface Interface1
{
void Authorize(string p1, int p2);
void LookupCode(int test);
void GetObject(int ID);
}
interface Interface2
{
void Authorize(string p1);
void LookupCode(int test);
void GetObject(int ID);
}
class WebService : Interface1, Interface2
{
public void Authorize(string p1, int p2)
{
throw new NotImplementedException();
}
public void Authorize(string p1)
{
throw new NotImplementedException();
}
void Interface2.LookupCode(int test)
{
throw new NotImplementedException();
}
void Interface2.GetObject(int ID)
{
throw new NotImplementedException();
}
void Interface1.LookupCode(int test)
{
throw new NotImplementedException();
}
void Interface1.GetObject(int ID)
{
throw new NotImplementedException();
}
}
但如果您不需要自己重复,请使用interface segregation