diff --git a/source/poodinis/autowire.d b/source/poodinis/autowire.d index 7912f4e..cb0f47c 100644 --- a/source/poodinis/autowire.d +++ b/source/poodinis/autowire.d @@ -9,12 +9,23 @@ module poodinis.autowire; public import poodinis.container; +debug { + import std.stdio; + import std.string; +} + class Autowire{}; public void autowire(Type)(Container container, Type instance) { foreach (member ; __traits(derivedMembers, Type)) { foreach (attribute; mixin(`__traits(getAttributes, Type.` ~ member ~ `)`) ) { if (is(attribute : Autowire) && __traits(getMember, instance, member) is null){ + debug { + auto autoWireType = typeid(typeof(__traits(getMember, instance, member))); + auto memberQualifier = typeid(Type).toString(); + writeln(format("Autowire %s to %s.%s", autoWireType, memberQualifier, member)); + } + __traits(getMember, instance, member) = container.resolve!(typeof(__traits(getMember, instance, member))); } }