que tiene que hacer algo como esto:
interface InterfaceA
{
void MethodA();
}
class ClassA : InterfaceA
{
void InterfaceA.MethodA()
{ MethodB(); }
protected virtual void MethodB()
{
}
}
A menudo, este es un enfoque superior de todos modos como el método interno puede cambiar la firma sin cambiar la interfaz. Tome una palabra real ejemplo más:
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)
{
}
}
Aquí se puede ver que se añadió la IOrderDetails2 podemos refactorizar con seguridad el método virtual existente (lo que genera errores en tiempo de compilación para derivaciones). Además, esto a menudo le permite proporcionar funcionalidad común, registro y manejo de excepciones en la clase de implementación base ...
¿Por qué quiere eludirlo? ¿Qué beneficio agrega eso? –
@Eric Me ahorrará un poco de mecanografía –
¿Cómo no se permite marcar un método de interfaz explícito como virtual porque te da más tipeo? –