У меня очень простой сценарий: "человек" может быть "клиентом" или "сотрудником" компании.
«человеку» можно позвонить по телефону с помощью метода «Позвонить».
В зависимости от того, какую роль играет "человек" в контексте звонка, например. объявление о новом продукте или объявление об изменении в организации, мы должны либо использовать номер телефона, предоставленный для роли «клиент», либо номер, предоставленный для «сотрудника» роль.
Вот итог ситуации:
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
}
}
Но этот код не компилируется и выдает ошибки:
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()'
Есть ли шанс реализовать этот сценарий на C# другим способом или мне придется искать другой дизайн?
Если да, то какие альтернативы вы предлагаете?
Заранее спасибо за вашу помощь.
((IPerson)new Both()).Call()
? - person SLaks   schedule 07.12.2010