2011-10-22 85 views
0

我有一个基本的Windows窗体类,其中包含两个按钮:确定和取消。此碱形式实现接口IBaseForm在C中的接口继承Windows窗体#

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,但它很多,我必须多次实现。

我该如何解决这个问题?

回答

0

没有其他的方法来做到这一点。 BaseForm是一个类,而IItem是一个不相关的接口。既不是另一个的“超级”或“基础”,所以您需要在两者中继承IBaseForm。

+0

好的,我保留原样 – Robert

0

我真的不明白这个问题;你编写的代码编译并运行得很好,就像你写的代码一样。

AddItemForm继承BaseForm的执行IBaseForm,所以不必重新执行IBaseForm

+0

我知道上面的代码编译成功,但接口IBaseForm必须被继承两次。 – Robert

+0

'AddItemForm'将IBaseForm接口应用到它两次 - 从BaseForm继承和实现'IItem',但这并不重要。它从'BaseForm'继承它的实现,因此只实现*它一次。 –