Explicit Interface Implementation

Ivan Timokhin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Feb 14 12:37:34 PST 2015


ref2401 wrote:

> Does D provide a way for explicit interface implementation?
> [C#] https://msdn.microsoft.com/en-us/library/ms173157.aspx

Not exactly, but you may try something like this:

interface A
{
    void foo();
}

interface B
{
    void foo();
}

class C : A
{
    class Nested : B
    {
        void foo()
        {
            this.outer.fooB();
        }
    }

    Nested nested;
    alias nested this;

    this()
    {
        nested = this.new Nested;
    }

    void foo()
    {
        import std.stdio : writeln;
        writeln("A's foo");
    }

    void fooB()
    {
        import std.stdio : writeln;
        writeln("B's foo");
    }
}

void main()
{
    C c = new C;
    A a = c;
    B b = c;
    a.foo();
    b.foo();
}

Prints:
A's foo
B's foo


More information about the Digitalmars-d-learn mailing list