Search code examples
c#interfacec#-8.0default-implementation

C# how to add a default implementation to an interface which is overriding another interface


For example:

interface IDottable : IGetDottable
{
    bool try_dot_operator(string name);
    // ... more methods
    IDottable Dottable => this;
}
interface IGetDottable
{
    IDottable Dottable {get;}
}

It gives me:

"'IDottable.Dottable' hides inherited member 'IGetDottable.Dottable'. Use the new keyword if hiding was intended.".

Solution

  • Try this:

    interface IDottable : IGetDottable
    {
         bool try_dot_operator(string name);
         // ... more methods
         IDottable IGetDottable.Dottable => this;
    }
    interface IGetDottable
    {
        IDottable Dottable {get;}
    }
    

    Default implementations in interfaces do not make the method public.