c#中带有接口的继承窗口窗体
本文关键字:继承 窗口 窗体 接口 | 更新日期: 2023-09-27 18:12:10
我有一个基本的窗口窗体类,其中包含两个按钮:确定和取消。这个基本表单实现了接口IBaseForm
:
public interface IBaseForm
{
string FormText {get;set;}
DialogResult ShowView(IWin32Window owner);
}
public partial class BaseForm : IBaseForm
{
...
}
接下来,我有一个窗口类,继承自BaseForm
并实现另一个接口IItem
:
public interface IItem : IBaseForm // here is problem
{
string ItemName {get; set;}
...
}
public partial class AddItemForm : BaseForm, IItem
{
...
// I don't have to implement IItem here, because it is implement in BaseForm
}
问题在于IBaseForm
的继承;我必须继承它两次。在代码中:
IItem view = new AddItemForm();
view.FormText = "Add new item";
如果我删除IItem
的继承,view.FormText
将不可见。如果我从BaseForm
中删除继承,我必须在每个AddItemForm
中实现IBaseForm
。我只展示了一个itemForm,但它很多,我必须实现它很多次。
如何解决这个问题?
没有别的办法了。BaseForm是一个类,而IItem是一个不相关的接口。两者都不是另一个的'super'或'base',所以你需要在它们两个中继承IBaseForm。
我真的不明白这个问题;你写的代码编译和运行都很好。
AddItemForm
继承了BaseForm
对IBaseForm
的实现,所以不需要重新实现IBaseForm
。