Bạn phải làm một cái gì đó như thế này:
interface InterfaceA
{
void MethodA();
}
class ClassA : InterfaceA
{
void InterfaceA.MethodA()
{ MethodB(); }
protected virtual void MethodB()
{
}
}
Thông thường đây là một cách tiếp cận tốt hơn anyway như phương pháp nội bộ có thể thay đổi chữ ký mà không thay đổi giao diện. Hãy hơn ví dụ chữ thật:
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)
{
}
}
đây bạn có thể xem như là IOrderDetails2 đã được bổ sung chúng ta có thể an toàn Refactor phương pháp ảo hiện có (do đó tạo ra thời gian biên dịch lỗi cho Mục từ). Ngoài ra, điều này thường cho phép bạn cung cấp chức năng phổ biến, ghi nhật ký và xử lý ngoại lệ trong lớp triển khai cơ sở ...
Nguồn
2010-07-26 17:15:18
Tại sao bạn muốn phá vỡ nó? Lợi ích nào được thêm vào? –
@Eric Nó sẽ tiết kiệm cho tôi một số gõ –
Làm thế nào không được phép đánh dấu một phương thức giao diện rõ ràng là ảo khiến bạn gõ nhiều hơn? –