在 C# 中,我可以创建一个接口(interface),当我使用该接口(interface)时,编译器知道基类满足了某些接口(interface)要求。举个例子可能会更清楚:
interface FormInterface
{
void Hide();
void Show();
void SetupForm();
}
public partial class Form1 : Form, FormInterface
{
public Form1()
{
InitializeComponent();
}
public void SetupForm()
{
}
}
编译器知道 Hide() 和 Show() 是在 Form 中实现的,上面的代码编译得很好。我不知道如何在 VB.NET 中执行此操作。当我尝试时:
Public Interface FormInterface
Sub Hide()
Sub Show()
Sub SetupForm()
End Interface
Public Class Form1
Inherits System.Windows.Forms.Form
Implements FormInterface
Public Sub SetupForm() Implements FormInterface.SetupForm
End Sub
End Class
但是编译器提示 Form1 必须为接口(interface)“FormInterface”实现“Sub Hide()”。我真的必须添加以下内容吗?
Public Sub Hide1() Implements FormInterface.Hide
Hide()
End Sub
在我的所有表单上,还是创建一个具有 SetupForm() 的抽象基类(以及如何在 VB.NET 中执行此操作)的更好途径?
最佳答案
不,System.Windows.Forms.Form
没有实现 FormInterface,所以 VB.NET不知道他们匹配。 VB.NET 不执行隐式接口(interface)实现,只执行显式。
是的,您应该创建一个基类并在其上实现您的接口(interface)。但是,我会给它们命名略有不同。可能是 DoShow
和 DoHide
。
像这样:
Public Class BaseForm
Inherits System.Windows.Forms.Form
Implements FormInterface
Public Sub SetupForm() Implements FormInterface.SetupForm
End Sub
Public Sub DoShow() Implements FormInterface.DoSHow
Me.Show()
End Sub
Public Sub DoHide() Implements FormInterface.DoHide
Me.Hide()
End Sub
End Class
否则你可能会不小心这样做:
Public Class BaseForm
Inherits System.Windows.Forms.Form
Implements FormInterface
Public Sub SetupForm() Implements FormInterface.SetupForm
End Sub
Public Sub Show() Implements FormInterface.SHow
Me.Show()
End Sub
Public Sub Hide() Implements FormInterface.Hide
Me.Hide()
End Sub
End Class
那会崩溃和燃烧。
不要让基类必须继承,因为表单设计者不喜欢那样。
关于c# - 如何使用隐式实现在 VB.NET 中创建接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685976/