<p>I feel like a fool, but here goes:</p>

<pre><code>public interface IHasErrorController{
  ErrorController ErrorController { get; set; }
}

public class DSErrorController: ErrorController{yadi yadi ya}

public class DSWebsiteController : Controller, IHasErrorController{
    public DSErrorController ErrorController { get; set; }
}
</code></pre>

<p>This gives me an error saying DSWebsiteController.ErrorController cannot implement IHasErrorController despite DSErrorController being inheritted from ErrorController.</p>

<p>Also, suggestions for a better naming so that the type ErrorController and the field Errorcontroller don't look the same are welcome (naming is hard).</p>

C# (at the moment) has very little [co|contra]variance support; as such, the interface implementation must be an
exact
match, including the return type. To keep your concreate type on the class API, I would implement the interface explicitly - i.e. add:
```
```
ErrorController IHasErrorControlloer.ErrorController {
  get {return this.ErrorController;}
  set {this.ErrorController = (DSErrorController)value;}
}
```
```
Alternatively, simply change the type of the property to
```
ErrorController
```
- this may (or may not) give what you need.