These go in the module you want allow access to the outside world just as if they were in the same module!

auto Setter(string name, alias O, T)(T t)
{
        mixin("t."~name~" = O();");
}

auto ref Getter(string name, T)(T t)
{
        mixin("return t."~name~";");
}



x.Setter!("privateFieldName", { return value; }); // privateFieldName = value;
x.Getter!("privateFieldName"); // = privateFieldName


You can think me now... or later, which ever you choose! I hope there is no SOLID henchmen here!

Of course, these should be used only between modules that are tightly coupled... This can happen when a derived class needs access to it's parent as if it were in the same module but the modules are split only for parsing.





Reply via email to