Cannot inherit from generic base class and specific interface using same type with generic constrain

Posted by simendsjo on Stack Overflow See other posts from Stack Overflow or by simendsjo
Published on 2010-06-15T09:43:04Z Indexed on 2010/06/15 9:52 UTC
Read the original article Hit count: 213

Filed under:
|
|
|

Sorry about the strange title. I really have no idea how to express it any better...

I get an error on the following snippet. I use the class Dummy everywhere. Doesn't the compiler understand the constraint I've added on DummyImplBase? Is this a compiler bug as it works if I use Dummy directly instead of setting it as a constraint?

Error 1 'ConsoleApplication53.DummyImplBase' does not implement interface member 'ConsoleApplication53.IRequired.RequiredMethod()'. 'ConsoleApplication53.RequiredBase.RequiredMethod()' cannot implement 'ConsoleApplication53.IRequired.RequiredMethod()' because it does not have the matching return type of 'ConsoleApplication53.Dummy'. C:\Documents and Settings\simen\My Documents\Visual Studio 2008\Projects\ConsoleApplication53\ConsoleApplication53\Program.cs 37 27 ConsoleApplication53

public class Dummy
{
}

public interface IRequired<T>
{
    T RequiredMethod();
}

public interface IDummyRequired : IRequired<Dummy>
{
    void OtherMethod();
}

public class RequiredBase<T> : IRequired<T>
{
    public T RequiredMethod()
    {
        return default(T);
    }
}

public abstract class DummyImplBase<T> : RequiredBase<T>, IDummyRequired
    where T: Dummy
{
    public void OtherMethod()
    {
    }
}

© Stack Overflow or respective owner

Related posts about c#

Related posts about generics