public void ResolveDifferentObjectYieldsDifferentObjects() { var details1 = new RegistrationDetails { RegisteredType = typeof(ISimpleInterface), Instructions = new BuildDetails() }; var details2 = new RegistrationDetails { RegisteredType = typeof(ILifetimeManager), Instructions = new BuildDetails() }; var moqBuilder = new Mock <IObjectConstructor>(); moqBuilder.Setup(t => t.Build(details1.Instructions)).Returns(new SimpleClass()); moqBuilder.Setup(t => t.Build(details2.Instructions)).Returns(new TransientLifetimeManager()); ILifetimeManager manager = new SingletonLifetimeManager(moqBuilder.Object); var obj1 = manager.CreateType(details1); var obj2 = manager.CreateType(details2); Assert.NotEqual(obj1, obj2); }
internal Component(Type interfaceType, Type proxyType) { InterfaceType = interfaceType; _proxyType = proxyType; // Default is singleton LifetimeManager = new SingletonLifetimeManager(); }
public void WorksWithConstructorAndPropertyInjection() { // --- Arrange var ltManager = new SingletonLifetimeManager { ServiceObjectType = typeof(SampleObject), ConstructionParameters = new object[] { 12 }, Properties = new PropertySettingsCollection(new List <PropertySettings> { new PropertySettings("Property1", "45"), new PropertySettings("Property2", "hello") }) }; // --- Act var instance1 = ltManager.GetObject() as SampleObject; var instance2 = ltManager.GetObject() as SampleObject; // --- Assert instance1.ShouldNotBeNull(); instance1.ShouldBeSameAs(instance2); // ReSharper disable PossibleNullReferenceException instance1.Property1.ShouldEqual(45); instance1.Property2.ShouldEqual("hello"); // ReSharper restore PossibleNullReferenceException }
public void ResolveSameObjectTwiceYieldsSameObject() { var details1 = new RegistrationDetails { RegisteredType = typeof(ISimpleInterface), Instructions = new BuildDetails() }; var details2 = new RegistrationDetails { RegisteredType = typeof(ISimpleInterface), Instructions = new BuildDetails() }; var returnClass = new SimpleClass(); var moqBuilder = new Mock <IObjectConstructor>(); moqBuilder.Setup(t => t.Build(details1.Instructions)).Returns(returnClass); moqBuilder.Setup(t => t.Build(details2.Instructions)).Returns(returnClass); ILifetimeManager manager = new SingletonLifetimeManager(moqBuilder.Object); var obj1 = manager.CreateType(details1); var obj2 = manager.CreateType(details2); Assert.Equal(obj1, obj2); }
public static void RegisterSingleton(this IContainer container, Type fromType, Type toType, string key = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } var lifetimeManager = new SingletonLifetimeManager(toType, container); container.Register(lifetimeManager, fromType, key); }
public void RegisteredInstanceReturnsRegisteredInstance() { var details = new RegistrationDetails { RegisteredType = typeof(ISimpleInterface), Instructions = new BuildDetails() }; var manager = new SingletonLifetimeManager(); var simpleInstance = new SimpleClass(); manager.AddInstance(details.RegisteredType, simpleInstance); var returnInstance = manager.CreateType(details); Assert.Equal(simpleInstance, returnInstance); }
public void WorksWithInstance() { // --- Arrange var ltManager = new SingletonLifetimeManager(new SampleObject()); // --- Act var instance1 = ltManager.GetObject() as SampleObject; var instance2 = ltManager.GetObject() as SampleObject; // --- Assert instance1.ShouldNotBeNull(); instance1.ShouldBeSameAs(instance2); // ReSharper disable PossibleNullReferenceException instance1.Property1.ShouldEqual(SampleObject.DEFAULT_INT); instance1.Property2.ShouldEqual(SampleObject.DEFAULT_STRING); // ReSharper restore PossibleNullReferenceException }
public static void RegisterSingleton(this IContainer container, Type type, string key = null, Func <IResolver, object> factory = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (factory == null) { container.RegisterSingleton(type, type, key); return; } var lifetimeManager = new SingletonLifetimeManager(type, container, factory); container.Register(lifetimeManager, type, key); }
private static LifetimeManager CreateLifeTime(LifeCycle lifeCycle) { LifetimeManager lifetimeManager = null; switch (lifeCycle) { case LifeCycle.Singleton: default: lifetimeManager = new SingletonLifetimeManager(); break; case LifeCycle.Transient: lifetimeManager = new TransientLifetimeManager(); break; } return(lifetimeManager); }
public void TestLifetimeManagerRegisterResolve() { var dependency = new SimpleDependency(); var lifetimeManager = new SingletonLifetimeManager(dependency); bool keepTrackObject; var resolvedObject1 = lifetimeManager.Resolve(null, out keepTrackObject); Assert.IsNotNull(resolvedObject1); var resolvedObject2 = lifetimeManager.Resolve(null, out keepTrackObject); Assert.IsNotNull(resolvedObject2); Assert.AreSame(resolvedObject1, resolvedObject2); Assert.AreEqual(SimpleDependency.ActiveDependecies, 1); dependency.Dispose(); }
public void WorksWithConstructorParams2() { // --- Arrange var ltManager = new SingletonLifetimeManager { ServiceObjectType = typeof(SampleObject), ConstructionParameters = new object[] { 23 } }; // --- Act var instance1 = ltManager.GetObject() as SampleObject; var instance2 = ltManager.GetObject() as SampleObject; // --- Assert instance1.ShouldNotBeNull(); instance1.ShouldBeSameAs(instance2); // ReSharper disable PossibleNullReferenceException instance1.Property1.ShouldEqual(23); instance1.Property2.ShouldEqual(SampleObject.DEFAULT_STRING); // ReSharper restore PossibleNullReferenceException }
public void WorksWithReset() { // --- Arrange var ltManager = new SingletonLifetimeManager { ServiceObjectType = typeof(SampleObject) }; // --- Act var instance1 = ltManager.GetObject() as SampleObject; ltManager.ResetState(); var instance2 = ltManager.GetObject() as SampleObject; var instance3 = ltManager.GetObject() as SampleObject; // --- Assert instance1.ShouldNotBeNull(); instance2.ShouldNotBeNull(); instance1.ShouldNotBeSameAs(instance2); instance2.ShouldBeSameAs(instance3); }