web-dev-qa-db-ja.com

基本インターフェースから継承するインターフェース

シナリオ:

ASP.NET MVC 3とC#を使用しています。 Init()メソッドを持つサービスがたくさんあります。

それで、継承は私の新しい親友だと思いました。他のインターフェースからインターフェースを継承しようとしました。

しかし、私は問題に直面しています。

私がやった事:

私が理解しているように、あるインターフェースは別のインターフェースから継承できます。つまり、これを行うことができます:

_public interface ICaseService : IBaseService
{
    CaseViewModel ViewModel { get; }

    Case Case { get; set; }
}
_

どこ:

_public interface IBaseService
{
    void Init();
}
_

したがって、ICaseServiceからCaseServiceを派生させるときは、Init()メソッド、Caseプロパティ、およびViewModelプロパティを実装する必要があります。

問題:

ICaseServiceへの参照を持つコントローラーがあるとしましょう:

_private readonly ICaseService service;
_

私の行動では、私はできるはずだと思います:

_public virtual ActionResult MyAction()
{
    service.Init();
}
_

しかし、ICaseServiceにはInit()の定義が含まれていないというエラーメッセージが表示されます。

質問:

  1. どうして?

  2. インターフェイスからインターフェイスを継承することを忘れて、各インターフェイス定義にInit()メソッドを入力する必要がありますか?

注意:

上記は簡略化されたシナリオです。私の「ベース」インターフェースには、Init()以外の多くの定義が含まれています。

23
awrigley

継承チェーンでは、ここでは詳細を説明するのに、非常に多くの非常に多くの愚かなことをしました。有効な点は、それが機能することです。間違っていたのはチェーンでした。

MSDNを調べたとき、理解を裏付けるこの単純な手法の簡単な例はありませんでした。まして、この種のインターフェイスでの継承の使用に関する実際のドキュメントはありませんでした。

11
awrigley