Closed stephanlindauer closed 4 years ago
Hi,
Circular references aren't allowed. And, IMO, they're not architecturally sound. When two components have a strong dependency on each other it's a clear indication something's wrong. Why exactly do they need a (injected) dependency on each other? There's a number of work-arounds:
All depends on the situation, how they interact with each other and the rest of the system.
If I have a Model "blaModel" that wants to get the "fooModel" injected and the other way around I would get a Stacktrace like this one:
Error: Error #1023: Stack overflow occurred. at org.swiftsuspenders.dependencyproviders::SingletonProvider/createResponse()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/dependencyproviders/SingletonProvider.as:61] at org.swiftsuspenders.dependencyproviders::SingletonProvider/apply()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/dependencyproviders/SingletonProvider.as:49] at org.swiftsuspenders.typedescriptions::PropertyInjectionPoint/applyInjection()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/typedescriptions/PropertyInjectionPoint.as:52] at org.swiftsuspenders::Injector/applyInjectionPoints()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/Injector.as:692] at org.swiftsuspenders::Injector/instantiateUnmapped()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/Injector.as:430] at org.swiftsuspenders.dependencyproviders::SingletonProvider/createResponse()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/dependencyproviders/SingletonProvider.as:61] at org.swiftsuspenders.dependencyproviders::SingletonProvider/apply()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/dependencyproviders/SingletonProvider.as:49] at org.swiftsuspenders.typedescriptions::PropertyInjectionPoint/applyInjection()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/typedescriptions/PropertyInjectionPoint.as:52] at org.swiftsuspenders::Injector/applyInjectionPoints()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/Injector.as:692] at org.swiftsuspenders::Injector/instantiateUnmapped()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/Injector.as:430] at org.swiftsuspenders.dependencyproviders::SingletonProvider/createResponse()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/dependencyproviders/SingletonProvider.as:61] at org.swiftsuspenders.dependencyproviders::SingletonProvider/apply()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/dependencyproviders/SingletonProvider.as:49] at org.swiftsuspenders.typedescriptions::PropertyInjectionPoint/applyInjection()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/typedescriptions/PropertyInjectionPoint.as:52] at org.swiftsuspenders::Injector/applyInjectionPoints()[/Development/projects/SwiftSuspenders/src/org/swiftsuspenders/Injector.as:692]
and so on....
I feel like cross injecting Models should be possible just because I can't see any architectural concerns against it.