我正在使用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()
的定义。
为什么?
我是否必须忘记从接口继承接口,只需在每个接口定义中输入Init()
方法?
以上是一个简化的方案。我的“基础”接口包含的定义多于Init()。
答案 0 :(得分:11)
在继承链中,我做了许多愚蠢的事情,这里有太多太愚蠢的细节。 有效的一点是它有效,链条出了什么问题。
当我查阅MSDN时,没有简单的例子来说明这种简单的技术来支持我的理解,更不用说任何关于这种继承与接口的使用的真实文档了。