Окна наследования создаются с интерфейсами в C # - PullRequest
0 голосов
/ 23 октября 2011

У меня есть базовый класс форм окон, который содержит две кнопки: Ok и Cancel.Эта базовая форма реализует интерфейс 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, мне придется реализовать IBaseForm в каждом AddItemForm.Я показал только одну itemForm, но это много, и мне приходится много раз это реализовывать.

Как мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 23 октября 2011

Я не очень понимаю проблему; код, который вы написали, компилируется и работает так же хорошо, как вы его написали.

AddItemForm наследует BaseForm реализацию IBaseForm, поэтому не нужно повторно реализовывать IBaseForm.

0 голосов
/ 23 октября 2011

Нет другого способа сделать это. BaseForm - это класс, тогда как IItem - это не связанный интерфейс. Ни один из них не является «супер» или «базой» другого, поэтому вам нужно наследовать от IBaseForm в обоих из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...