I have a very simple scenario : a "person" can be a "customer" or an "employee" of a company.
A "person" can be called by phone with the "Call" method.
Depending on which role the "person" plays in the context of the call, e.g. the announcement of a new product or the announcement of a change in organization, we should either use the phone number provided for the "customer" role or the one provided for the "employee" role.
Here is a sum-up of the situation :
interface IPerson
{
void Call();
}
interface ICustomer : IPerson
{
}
interface IEmployee : IPerson
{
}
class Both : ICustomer, IEmployee
{
void ICustomer.Call()
{
// Call to external phone number
}
void IEmployee.Call()
{
// Call to internal phone number
}
}
But this code doe not compile and produces the errors :
error CS0539: 'ICustomer.Call' in explicit interface declaration is not a member of interface
error CS0539: 'IEmployee.Call' in explicit interface declaration is not a member of interface
error CS0535: 'Both' does not implement interface member 'IPerson.Call()'
Does this scenario has any chance to be implementable in C# in a different way or will I have to find another design ?
If so what alternatives do you propose ?
Thanks in advance for your help.
((IPerson)new Both()).Call()
? – Distiller