package com.kerisy.mod.base

interface BaseMod
{
        auto getInstance();
}

package com.kerisy.mod.a

class A : BaseMod
{
        A getInstance()
        {
                return (new A);
        }
        
        void hello()
        {
                // in A
                writeln("in A");
        }
}

package com.kerisy.mod.b

class B : BaseMod
{
        B getInstance()
        {
                return (new B);
        }
        
        void hello()
        {
                // in B
                writeln("in B");
        }
}

import std.stdio;
import com.kerisy.mod.a;
import com.kerisy.mod.b;

int main(string[] argv)
{
        string packageClass;
        
        packageClass packageClass = "mod.forum.controller.forum.A";
        BaseMod modObje = cast(BaseMod)Object.factory(packageClass);
        auto a = modObj::getInstance();
        Object.callMethod(a, "hello");
        
        packageClass packageClass = "mod.forum.controller.forum.A";
        BaseMod modObje = cast(BaseMod)Object.factory(packageClass);
        auto a = modObj::getInstance();
        Object.callMethod(a, "hello");
        
        return 0;
}

Reply via email to