mirror of
https://github.com/mbierlee/poodinis.git
synced 2024-11-15 04:04:01 +01:00
Add mixin for boilerplate workaround
This commit is contained in:
parent
06024e55db
commit
627d165d6f
|
@ -126,14 +126,20 @@ Known issues
|
|||
* Due to preventive measures of recursion issues in circular dependencies, registrations which are supposed to yield new instances will not autowire classes for which a circular dependency is detected. A new instance will be resolved but the instance's members will not be autowired.
|
||||
* Resolving a class registered by supertype or interface will only autowire the members inherited from its supertypes and in the case of interfaces none at all. A workaround for this issue is to autowire members in the constructor of a class:
|
||||
```d
|
||||
import poodinis.autowire;
|
||||
|
||||
class ComponentF {
|
||||
@Autowire
|
||||
public ComponentA componentA;
|
||||
|
||||
public this() {
|
||||
auto container = Container.getInstance();
|
||||
container.autowire!ComponentF(this);
|
||||
container.autowire!(typeof(this))(this);
|
||||
}
|
||||
|
||||
// or use:
|
||||
// mixin AutowireConstructor;
|
||||
// which adds the constructor above
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -37,3 +37,10 @@ public void autowire(Type)(Container container, Type instance) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
mixin template AutowireConstructor() {
|
||||
public this() {
|
||||
auto __container = Container.getInstance();
|
||||
__container.autowire!(typeof(this))(this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,10 +46,7 @@ version(unittest) {
|
|||
@Autowire
|
||||
public ComponentA componentA;
|
||||
|
||||
public this() {
|
||||
auto container = Container.getInstance();
|
||||
container.autowire!(typeof(this))(this);
|
||||
}
|
||||
mixin AutowireConstructor;
|
||||
}
|
||||
|
||||
// Test autowiring concrete type to existing instance
|
||||
|
|
Loading…
Reference in a new issue