如何在 VB.net 中实现这样的接口
本文关键字:接口 实现 VB net | 更新日期: 2024-10-30 12:01:31
在C#项目中,我有一个这样的接口:
public interface IView
{
event EventHandler Load;
}
我在 WebForms 的用户控件中实现它,如下所示:
public partial class LoginUserControl : UserControl, IView
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
因为用户控件的基本控件具有事件调用 Load,所以我不需要在 LoginUserControl 中写入任何内容。
但是,在 vb.net 中,我像这样声明接口:
Public Interface IView
Event Load As EventHandler
End Interface
还有像这样的登录用户控件:
Partial Public Class LoginUserControl
Inherits UserControl
Implements IView
Protected Sub Page_Load(sender As Object, e As EventArgs)
End Sub
End Class
它无法构建,因为缺少工具。 但我补充说
Public Event Load As EventHandler Implements IView.Load
与说, 与基类混淆,应声明为"影子"
我该怎么办?
更新 12/18
我不想隐藏基类事件。我只想要像 C# 这样的行为。
例如。
我有一个班级:
class A : IView
然后我必须实现 Load 事件。但是如果我有一个类:
class B : Control, IView
基类控件具有相同的名称 Load,我不需要在 B 中实现任何东西。
更新 12/18
哦,是的,这是解决方案。 但是,wtxxxx,它看起来很痛。但是,谢谢大家。
你不需要
使用"Shadows" - 只需在实现时更改名称:
Private Event IView_Load As EventHandler Implements IView.Load
您的类仍然实现 IView.Load,并且在通过 IView 实例访问时仍然可以使用名称"Load"
如果声明的元素与基类中定义的元素同名。 在这种情况下,此类中的元素应 Shadow 基类元素。因此,您可以在此处将 Shadows 关键字添加到声明中,或更改要声明的元素的名称。
Partial Public Class LoginUserControl
Inherits System.Web.UI.UserControl
Implements IView
Public Shadows Event Load As EventHandler Implements IView.Load
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
Public Interface IView
Event Load As EventHandler
End Interface