Вы должны сделать что-то вроде этого:
interface InterfaceA
{
void MethodA();
}
class ClassA : InterfaceA
{
void InterfaceA.MethodA()
{ MethodB(); }
protected virtual void MethodB()
{
}
}
Часто это превосходный подход в любом случае в качестве внутреннего метода может изменить подпись без изменения интерфейса. Возьмите больше реального слова пример:
interface IOrderDetails
{
void PlaceOrder();
}
//Sometime later you extend with:
interface IOrderDetails2 : IOrderDetails
{
void PlaceOrder(IUser user);
}
//Implementation
class Order : IOrderDetails, IOrderDetails2
{
static readonly IUser AnonUser;
void IOrderDetails.PlaceOrder()
{ OnPlaceOrder(AnonUser); }
void IOrderDetails2.PlaceOrder(IUser user)
{ OnPlaceOrder(user); }
protected virtual void OnPlaceOrder(IUser user)
{
}
}
Здесь вы можете увидеть, как IOrderDetails2 был добавлен, мы можем смело реорганизовать существующий виртуальный метод (таким образом генерируя время компиляции ошибок для выводов). Кроме того, это часто позволяет вам обеспечить общую функциональность, протоколирование и обработку исключений в базовом классе реализации ...
Почему вы хотите обойти это? Какая польза от этого? –
@ Эрик Это сэкономит мне несколько цифр –
Как не разрешено помечать явный метод интерфейса как виртуальный, потому что вы больше набираете текст? –