Kri*_*son 6 c# vb.net interface
在C#中,我可以创建一个接口,当我使用该接口时,编译器知道基类满足某些接口要求.通过一个例子可能更清楚:
interface FormInterface
{
void Hide();
void Show();
void SetupForm();
}
public partial class Form1 : Form, FormInterface
{
public Form1()
{
InitializeComponent();
}
public void SetupForm()
{
}
}
Run Code Online (Sandbox Code Playgroud)
编译器知道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
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨Form1必须为接口'FormInterface'实现'Sub Hide()'.我真的要添加以下内容吗?
Public Sub Hide1() Implements FormInterface.Hide
Hide()
End Sub
Run Code Online (Sandbox Code Playgroud)
在我的所有表单上,或者是创建具有SetupForm()的抽象基类的更好的路径(以及如何在VB.NET中执行此操作)?
Form除非您打算在成员中使用类的受保护成员Form1,否则我将使用包含关系而不是继承。因此,您可以将您的FormInterface命名改为类似的内容IFormWrapper,并且您的实现将如下所示(我用 C# 来展示它,因为它是我的工作语言,我认为您将能够将这个想法转换为 VB):
public class Form1 : IFormWrapper
{
private readonly Form form;
public Form1 {
this.form=new Form();
}
public void Show() {
form.Show();
}
public void Hide() {
form.Hide();
}
public void SetupForm() {
//Code for the setup method
}
}
Run Code Online (Sandbox Code Playgroud)
毕竟,如果您计划Form1通过类使用实例FormInterface,则您将无法访问除和Form之外的成员。ShowHide