internal static void RegisterInstanceWeakRef(TinyIoCContainer container) { var item = new TestClassDefaultCtor(); item.Prop1 = "Testing"; container.Register <TestClassDefaultCtor>(item).WithWeakReference(); }
public TestClassWithDependency(TestClassDefaultCtor dependency) { if (dependency == null) { throw new ArgumentNullException("dependency"); } Dependency = dependency; }
internal static void RegisterFactoryWeakRef(TinyIoCContainer container) { var source = new TestClassDefaultCtor(); source.Prop1 = "Testing"; var item = new Func <TinyIoCContainer, NamedParameterOverloads, TestClassDefaultCtor>((c, p) => source); container.Register <TestClassDefaultCtor>(item).WithWeakReference(); }
public TestClassWithDependencyAndParameters(TestClassDefaultCtor dependency, int param1, string param2) { if (dependency == null) { throw new ArgumentNullException("dependency"); } Dependency = dependency; Param1 = param1; Param2 = param2; }
public void NamedLazyFactory_CalledByDependantClass_ReturnsCorrectInstanceOfType() { var container = UtilityMethods.GetContainer(); var item1 = new TestClassDefaultCtor(); var item2 = new TestClassDefaultCtor(); container.Register<TestClassDefaultCtor>(item1, "Testing"); container.Register<TestClassDefaultCtor>(item2); container.Register<TestClassWithNamedLazyFactory>(); var item = container.Resolve<TestClassWithNamedLazyFactory>(); item.Method1(); item.Method2(); Assert.ReferenceEquals(item.Prop1, item1); Assert.ReferenceEquals(item.Prop2, item2); }
public void ChildContainerResolve_NamedOnlyRegisteredWithParent_ResolvesFromParent() { var container = UtilityMethods.GetContainer(); var containerInstance = new TestClassDefaultCtor(); var child = container.GetChildContainer(); var childInstance = new TestClassDefaultCtor(); container.Register<ITestInterface>(containerInstance, "Testing"); child.Register<ITestInterface>(childInstance); var result = child.Resolve<ITestInterface>("Testing"); Assert.ReferenceEquals(result, containerInstance); }
public void ChildContainerCanResolve_NamedOnlyRegisteredWithParent_ReturnsTrue() { var container = UtilityMethods.GetContainer(); var containerInstance = new TestClassDefaultCtor(); var child = container.GetChildContainer(); var childInstance = new TestClassDefaultCtor(); container.Register<ITestInterface>(containerInstance, "Testing"); child.Register<ITestInterface>(childInstance); var result = child.CanResolve<ITestInterface>("Testing"); Assert.IsTrue(result); }
public void Resolve_RegisteredInstanceWithFluentMultiInstanceCall_ReturnsMultipleInstance() { var container = UtilityMethods.GetContainer(); var input = new TestClassDefaultCtor(); container.Register<TestClassDefaultCtor>(input).AsMultiInstance(); var result = container.Resolve<TestClassDefaultCtor>(); Assert.IsFalse(object.ReferenceEquals(result, input)); }
public void Resolve_NormalInstanceRegistrationFollowedByNamed_CanResolveNormal() { var container = UtilityMethods.GetContainer(); var instance1 = new TestClassDefaultCtor(); var instance2 = new TestClassDefaultCtor(); container.Register<TestClassDefaultCtor>(instance1); container.Register<TestClassDefaultCtor>(instance2, "TestName"); var result = container.Resolve<TestClassDefaultCtor>(); Assert.ReferenceEquals(instance1, result); }
public void Resolve_NamedFactoryRegistrationFollowedByNormal_CanResolveNamed() { var container = UtilityMethods.GetContainer(); var instance1 = new TestClassDefaultCtor(); var instance2 = new TestClassDefaultCtor(); container.Register<TestClassDefaultCtor>((c, p) => instance1, "TestName"); container.Register<TestClassDefaultCtor>((c, p) => instance2); var result = container.Resolve<TestClassDefaultCtor>("TestName"); Assert.ReferenceEquals(instance1, result); }
public void Method2() { Prop2 = _Factory.Invoke(); }
public TestClassWithDependency(TestClassDefaultCtor dependency, int param1, string param2) { Param1 = param1; Param2 = param2; }
public static bool ClassDefaultCtorParam(TestClassDefaultCtor x) { return(x.I == 0); }
public void Resolve_NamedInstanceRegistrationFollowedByNormal_CanResolveNamed() { var container = UtilityMethods.GetContainer(); var instance1 = new TestClassDefaultCtor(); var instance2 = new TestClassDefaultCtor(); container.Register<TestClassDefaultCtor>(instance1, "TestName"); container.Register<TestClassDefaultCtor>(instance2); var result = container.Resolve<TestClassDefaultCtor>("TestName"); Assert.AreSame(instance1, result); }
public void Resolved_InterfaceAndImplementationWithInstance_ReturnsCorrectInstance() { var container = UtilityMethods.GetContainer(); var item = new TestClassDefaultCtor(); container.Register<ITestInterface, TestClassDefaultCtor>(item); var result = container.Resolve<ITestInterface>(); Assert.AreSame(item, result); }
public void Resolve_InterfaceAndImplementationNamedWithInstance_ReturnsCorrectInstance() { var container = UtilityMethods.GetContainer(); var item = new TestClassDefaultCtor(); var item2 = new TestClassDefaultCtor(); container.Register<ITestInterface, TestClassDefaultCtor>(item, "TestName"); container.Register<ITestInterface, TestClassDefaultCtor>(item2); var result = container.Resolve<ITestInterface>("TestName"); Assert.ReferenceEquals(item, result); }
public void Method2() { Prop2 = _Factory.Invoke(String.Empty); }
public void Resolve_NamedRegistrationButOnlyUnnamedRegistered_ResolvesCorrectUnnamedRegistrationWithUnnamedFallback() { var container = UtilityMethods.GetContainer(); var item = new TestClassDefaultCtor() { Prop1 = "Testing" }; container.Register<TestClassDefaultCtor>(item); var result = container.Resolve<TestClassDefaultCtor>("Testing", new ResolveOptions() { NamedResolutionFailureAction = NamedResolutionFailureActions.AttemptUnnamedResolution }); Assert.ReferenceEquals(item, result); }
public TestClassMultiDepsMultiCtors(TestClassDefaultCtor prop1) { Prop1 = prop1; NumberOfDepsResolved = 1; }
public void Resolve_NotAlreadyResolvedSingletonTypeInParentContainerButDependencyInChildContainer_GetsDependencyFromParent() { var container = UtilityMethods.GetContainer(); container.Register<ITestInterface2, TestClassWithInterfaceDependency>().AsSingleton(); var parentInstance = new TestClassDefaultCtor(); container.Register<ITestInterface>(parentInstance); var child = container.GetChildContainer(); var childInstance = new TestClassDefaultCtor(); child.Register<ITestInterface>(childInstance); var result = child.Resolve<ITestInterface2>() as TestClassWithInterfaceDependency; Assert.IsTrue(object.ReferenceEquals(result.Dependency, parentInstance)); }
public TestClassMultiDepsMultiCtors(TestClassDefaultCtor prop1, TestClassDefaultCtor prop2) { Prop1 = prop1; Prop2 = prop2; NumberOfDepsResolved = 2; }
public void BuildUp_ObjectWithPropertyDependenciesWithSomeSet_SetsOnlyUnsetDependencies() { var container = UtilityMethods.GetContainer(); container.Register<ITestInterface, TestClassDefaultCtor>(); container.Register<ITestInterface2, TestClass2>(); var preset = new TestClassDefaultCtor(); var input = new TestClassPropertyDependencies(); input.Property1 = preset; container.BuildUp(input); Assert.ReferenceEquals(preset, input.Property1); Assert.IsNotNull(input.Property2); }
public void RegisterNonGeneric_TypeImplementingInterfaceInstanceAndName_RegistersAndCanResolve() { var container = UtilityMethods.GetContainer(); var instance = new TestClassDefaultCtor(); container.Register(typeof(ITestInterface), typeof(TestClassDefaultCtor), instance, "TestClass"); var result = container.Resolve<ITestInterface>("TestClass", ResolveOptions.FailUnregisteredAndNameNotFound); Assert.IsInstanceOfType(result, typeof(ITestInterface)); }
public void ChildContainerResolve_NamedOnlyRegisteredWithParentUnnamedFallbackOn_ResolvesFromChild() { var container = UtilityMethods.GetContainer(); var containerInstance = new TestClassDefaultCtor(); var child = container.GetChildContainer(); var childInstance = new TestClassDefaultCtor(); container.Register<ITestInterface>(containerInstance, "Testing"); child.Register<ITestInterface>(childInstance); var result = child.Resolve<ITestInterface>("Testing", new ResolveOptions() { NamedResolutionFailureAction = NamedResolutionFailureActions.AttemptUnnamedResolution }); Assert.ReferenceEquals(result, childInstance); }
public void Register_InterfaceAndImplementationWithInstance_Registers() { var container = UtilityMethods.GetContainer(); var item = new TestClassDefaultCtor(); container.Register<ITestInterface, TestClassDefaultCtor>(item); }
public void ChildContainerResolve_TypeRegisteredWithParentAndChild_ResolvesChildVersion() { var container = UtilityMethods.GetContainer(); var containerInstance = new TestClassDefaultCtor(); var child = container.GetChildContainer(); var childInstance = new TestClassDefaultCtor(); container.Register<ITestInterface>(containerInstance); child.Register<ITestInterface>(childInstance); var result = child.Resolve<ITestInterface>(); Assert.ReferenceEquals(result, childInstance); }
public void Register_NamedInstanceRegistration_CanRegister() { var container = UtilityMethods.GetContainer(); var item = new TestClassDefaultCtor(); container.Register<TestClassDefaultCtor>(item, "TestName"); }
public void RegisterNonGeneric_BasicTypeAndInstance_RegistersAndCanResolve() { var container = UtilityMethods.GetContainer(); var instance = new TestClassDefaultCtor(); container.Register(typeof(TestClassDefaultCtor), instance); var result = container.Resolve<TestClassDefaultCtor>(ResolveOptions.FailUnregisteredAndNameNotFound); Assert.ReferenceEquals(instance, result); }
public void Resolve_ContainerHierarchy_ResolvesCorrectlyUsingHierarchy() { var rootContainer = UtilityMethods.GetContainer(); var firstChildContainer = rootContainer.GetChildContainer(); var secondChildContainer = firstChildContainer.GetChildContainer(); var rootInstance = new TestClassDefaultCtor(); var firstChildInstance = new TestClassDefaultCtor(); var secondChildInstance = new TestClassDefaultCtor(); rootContainer.Register<ITestInterface2, TestClassWithInterfaceDependency>().AsMultiInstance(); rootContainer.Register<ITestInterface>(rootInstance); firstChildContainer.Register<ITestInterface>(firstChildInstance); secondChildContainer.Register<ITestInterface>(secondChildInstance); rootContainer.Resolve<ITestInterface2>(); var result = secondChildContainer.Resolve<ITestInterface2>() as TestClassWithInterfaceDependency; Assert.IsTrue(object.ReferenceEquals(result.Dependency, secondChildInstance)); }
public void Resolve_IEnumerableDependencyClassInChildContainerParentContainerMultiInstanceRegistrationWithDependencyInChildContainer_ReturnsRegistrationWithChildContainerDependencyInstance() { var parentContainer = UtilityMethods.GetContainer(); var childContainer = parentContainer.GetChildContainer(); var parentInstance = new TestClassDefaultCtor(); var childInstance = new TestClassDefaultCtor(); parentContainer.Register<ITestInterface2, TestClassWithInterfaceDependency>("1").AsMultiInstance(); parentContainer.Register<ITestInterface>(parentInstance); childContainer.Register<ITestInterface2, TestClassWithInterfaceDependency>("2").AsMultiInstance(); childContainer.Register<ITestInterface>(childInstance); childContainer.Register<TestClassEnumerableDependency2>(); var result = childContainer.Resolve<TestClassEnumerableDependency2>().Enumerable.ToArray(); var item1 = result[0] as TestClassWithInterfaceDependency; var item2 = result[1] as TestClassWithInterfaceDependency; Assert.IsNotNull(item1); Assert.IsNotNull(item2); Assert.IsFalse(object.ReferenceEquals(item1, item2), "items are same instance"); Assert.IsTrue(object.ReferenceEquals(item1.Dependency, childInstance), "item1 has wrong dependency"); Assert.IsTrue(object.ReferenceEquals(item2.Dependency, childInstance), "item2 has wrong dependency"); }
public void ResolveAll_ChildContainerRegistrationOverridesParentContainerRegistration_ReturnsChildRegistrations() { var parentContainer = UtilityMethods.GetContainer(); var childContainer = parentContainer.GetChildContainer(); var parentInstance = new TestClassDefaultCtor(); var childInstance = new TestClassDefaultCtor(); parentContainer.Register<ITestInterface>(parentInstance, "1"); childContainer.Register<ITestInterface>(childInstance, "1"); var result = childContainer.ResolveAll<ITestInterface>(); Assert.AreEqual(1, result.Count()); Assert.AreSame(childInstance, result.Single()); }