public void CanMakeSingletonInstance()
        {
            // must use a custom RegistrationConvention to set some as singletons
            // Which is a bit complex
            CustomRegistrationConvention registrationConvention = new CustomRegistrationConvention()
                .WithSingleton<BusinessProcess>();

            ObjectFactory.Initialize(x =>
                    x.Scan(y =>
                    {
                        y.With(registrationConvention);
                        y.AssemblyContainingType(typeof(BusinessProcess));
                    }));

            BusinessProcess businessProcess1 = ObjectFactory.GetInstance<BusinessProcess>();
            BusinessProcess businessProcess2 = ObjectFactory.GetInstance<BusinessProcess>();

            Assert.AreSame(businessProcess1, businessProcess2);
        }
        public void CanMakeTransientInstanceWithSingletonDependencies()
        {
            CustomRegistrationConvention registrationConvention = new CustomRegistrationConvention()
                .WithSingleton<ICustomerService>().WithSingleton<IOrderService>();

            ObjectFactory.Initialize(x =>
                x.Scan(y =>
                {
                    y.With(registrationConvention);
                    y.AssemblyContainingType(typeof(BusinessProcess));
                }));

            BusinessProcess businessProcess1 = ObjectFactory.GetInstance<BusinessProcess>();
            BusinessProcess businessProcess2 = ObjectFactory.GetInstance<BusinessProcess>();

            Assert.AreNotSame(businessProcess1, businessProcess2);
            Assert.AreSame(businessProcess1.CustomerService, businessProcess2.CustomerService);
            Assert.AreSame(businessProcess1.OrderService, businessProcess2.OrderService);
        }