Generally I don’t think it is a good idea to inject anything transient into a singleton, instead either pass the transient object instance to a method in the singleton or let a method in the singleton use an injected wirebox to create the instance of said transient object.
That’s does not answer anything based on the example, however.
Sorry this posted before I was done writing it, After which I just deleted it. But I guess it was sent out into the internets anyway.
I did figure out what I was doing wrong. Turns out I had a weird loop where OBJ_B was trying to use something from OBJ_A which injected OBJ_B, so at some point the system created a copy of OBJ_A to cope.
As far as why. In my example I’ve created a object that I call the library. It is a utility model that I use to collect , delete and iterate other objects. I wanted something that I could include in ANY of my other models to act similar to the Visual basic collection obj. The Library needs to be created for each object that uses it since I do not want collections inter-mixing.
I do the same thing all the time…extends=“base.collectors” is a model that handles the data and add, delete, purge, find, etc. functions on the collection of data, in a struct or array. Handy stuff…and a throwback from my VB days too.