public void CanRegisterAndLocateAService()
        {
            var locator           = new ServiceLocator();
            var myServiceInstance = new TestEchoService();
            var manager           = locator.Locate <IServiceLocationRuntimeManager>();

            Assert.IsNotNull(manager);
            manager.RegisterServiceInstance <ITestEchoService>(myServiceInstance);

            var service = locator.Locate <ITestEchoService>();

            Assert.IsNotNull(service);
            Assert.AreEqual("Works", service.Echo("Works"));
        }
        public void CanOverrideAndLocateAService()
        {
            var locator                    = new ServiceLocator();
            var echoServiceInstance        = new TestEchoService();
            var reverseEchoServiceInstance = new TestReverseEchoService();
            var runtimeManager             = locator.Locate <IServiceLocationRuntimeManager>();
            var overrrideManager           = locator.Locate <IServiceLocationOverrideManager>();

            Assert.IsNotNull(runtimeManager);
            Assert.IsNotNull(overrrideManager);

            runtimeManager.RegisterServiceInstance <ITestEchoService>(echoServiceInstance);
            overrrideManager.RegisterServiceInstance <ITestEchoService>(reverseEchoServiceInstance);


            var service = locator.Locate <ITestEchoService>();

            Assert.IsNotNull(service);
            Assert.IsInstanceOfType(service, typeof(TestReverseEchoService));
            Assert.AreEqual("skroW", service.Echo("Works"));
        }