Castle Custome Lifestyle per Resolve
I'm a newbie with Castle Windsor. Let's say I have the following classes:

    public class LowLevelComponent
    {
    }
    
    public class HighLevelComponent
    {
        readonly LowLevelComponent LowLevelComponent;

        public HighLevelComponent(LowLevelComponent lowLevelComponent)
        {
            LowLevelComponent = lowLevelComponent;
        }
    }
    
    public class ComponentBeingResolved
    {
        readonly LowLevelComponent LowLevelComponent;
        readonly HighLevelComponent HighLevelComponent;

        public ComponentBeingResolved(LowLevelComponent lowLevelComponent,
                                      HighLevelComponent highLevelComponent)
        {
            LowLevelComponent = lowLevelComponent;
            HighLevelComponent = highLevelComponent;
        }
    }

Registered in the easiest possible way:

    container.Register(Component.For<LowLevelComponent>());
    container.Register(Component.For<HighLevelComponent>());
    container.Register(Component.For<ComponentBeingResolved>());


I'd like to get the same instance of `LowLevelComponent` used in all dependencies ***each time I call Resolve***.

So, after these calls:

    var instance1 = container.Resolve<ComponentBeingResolved>();
    var instance2 = container.Resolve<ComponentBeingResolved>();

The following assertions should be true:

    instance1.LowLevelComponent == instance1.HighLevelComponent.LowLevelComponent
    instance1.LowLevelComponent != instance2.LowLevelComponent
    instance1.HighLevelComponent != instance2.HighLevelComponent

I'll also take *"you're doing **everything** wrong, this is what you should do instead"* as an answer :-)
Castle Custome Lifestyle per Resolve
===

I'm a newbie with Castle Windsor. Let's say I have the following classes:

    public class LowLevelComponent
    {
    }
    
    public class HighLevelComponent
    {
        readonly LowLevelComponent LowLevelComponent;

        public HighLevelComponent(LowLevelComponent lowLevelComponent)
        {
            LowLevelComponent = lowLevelComponent;
        }
    }
    
    public class ComponentBeingResolved
    {
        readonly LowLevelComponent LowLevelComponent;
        readonly HighLevelComponent HighLevelComponent;

        public ComponentBeingResolved(LowLevelComponent lowLevelComponent,
                                      HighLevelComponent highLevelComponent)
        {
            LowLevelComponent = lowLevelComponent;
            HighLevelComponent = highLevelComponent;
        }
    }

Registered in the easiest possible way:

    container.Register(Component.For<LowLevelComponent>());
    container.Register(Component.For<HighLevelComponent>());
    container.Register(Component.For<ComponentBeingResolved>());


I'd like to get the same instance of `LowLevelComponent` used in all dependencies ***each time I call Resolve***.

So, after these calls:

    var instance1 = container.Resolve<ComponentBeingResolved>();
    var instance2 = container.Resolve<ComponentBeingResolved>();

The following assertions should be true:

    instance1.LowLevelComponent == instance1.HighLevelComponent.LowLevelComponent
    instance1.LowLevelComponent != instance2.LowLevelComponent
    instance1.HighLevelComponent != instance2.HighLevelComponent

I'll also take *"you're doing **everything** wrong, this is what you should do instead"* as an answer :-)