Scenario:

I am using ASP.NET MVC 3 and C#. I have a lot of services that all have an Init() method.

So, I thought, inheritance is my new best friend. I have tried to inherit interfaces from other interfaces.

However, I am running into problems.

What I have done:

As I understand it, one interface can inherit from another interface. i.e, you can do this:

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

    Case Case { get; set; }
}

Where:

public interface IBaseService
{
    void Init();
}

So when I derive CaseService from ICaseService I will have to implement the Init() method as well as the Case property and the ViewModel property.

The Problem:

Lets say I now have a controller that has a reference to ICaseService:

private readonly ICaseService service;

In my actions, I reckon I should be able to do:

public virtual ActionResult MyAction()
{
    service.Init();
}

But I get an error message stating that ICaseService 'does not contain a definition for' Init().

Questions:

  1. Why?

  2. Do I have to forget about inheriting interfaces from interfaces and just type out in each interface definition the Init() method?

Note:

The above is a simplified scenario. My "base" interface contains many more definitions than just Init().

Edit
Report