Вы ищете реализации явного интерфейса.Эта ссылка имеет учебное пособие:
http://msdn.microsoft.com/en-us/library/aa288461(v=vs.71).aspx
По сути, сигнатура метода показывает тип интерфейса:
void BProcessor.Process(BProcessable b)
{
}
и доступна только при прямой ссылке наBProcessor
:
BProcessor b;
b.Process(null);
Выводимая ссылка на BProcessor
не будет работать с явными реализациями:
Processor p;
p.Process(new BProcessable()); // This won't compile.
Это позволяет реализовывать интерфейсы с конфликтующими именами членов.Если у них есть конфликтующие имена типов, вам нужно начать искать конфликты пространства имен.
Вы заметите явную реализацию, потому что когда вы получите Intellisense для Processor
, он будет отсутствовать Process(BProcessable b)
.
Если ваш код для обработки процесса предоставлен в общий доступ, вы можете сделать следующее:
public void Process(Processable p)
{
}
void AProcess.Process(AProcessable a)
{
Process((Processable)a);
}
void BProcess.Process(BProcessable b)
{
Process((Processable)b);
}
Однако лично я бы избегал этого типа прямого перенаправления, поскольку вы не гарантированы (кромеВы полностью контролируете код), чтобы получить тип Processable
.