从基接口继承的接口

时间:2011-12-15 14:08:37

标签: c# asp.net-mvc-3 inheritance interface

情景:

我正在使用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()方法?

  3. 注意:

    以上是一个简化的方案。我的“基础”接口包含的定义多于Init()。

1 个答案:

答案 0 :(得分:11)

在继承链中,我做了许多愚蠢的事情,这里有太多太愚蠢的细节。 有效的一点是它有效,链条出了什么问题。

当我查阅MSDN时,没有简单的例子来说明这种简单的技术来支持我的理解,更不用说任何关于这种继承与接口的使用的真实文档了。