sqlnewbie
sqlnewbie

Reputation: 867

How to inject constructor parameter deep in the dependcies at runtime while resolving through unity

In the below if I am trying to inject a constructor parameter in one of the dependencies of the model at runtime, it doesn't take with Parameter Override option. Is there any thing else that we need to do?

    public class Test: ITest
    {
        ITestChild _testChild ;
        public Test(ITestChild testChild)
        {
            _testChild = testChild;
        }
    }

    public class TestChild: ITestChild
    {
        ITestChildChild _testChildChild ;
        public Test(ITestChildChild testChildChild)
        {
            _testChildChild = testChildChild;
        }
    }

    public class TestChildChild: ITestChildChild
    {
        public TestChildChild()
        {
        }
    }

Mapping Unity:

    var unityContainer = new UnityContainer();
    unityContainer.RegisterType<ITest, Test>(new ContainerControlledLifetimeManager());
    unityContainer.RegisterType<ITestChild TestChild>();
    unityContainer.RegisterType<ITestChildChild, TestChildChild>();

    Main()
    {
        var testChildChild = new TestChildChild();
        var testObject = UnityContainer.Resolve<ITest>(new ParameterOverride("testChildChild", testChildChild));
    }

Upvotes: 1

Views: 232

Answers (1)

sqlnewbie
sqlnewbie

Reputation: 867

Main()
{
    var testChildChild = new TestChildChild();
    var testObject = UnityContainer.Resolve<ITest>(new DependencyOverride("testChildChild", testChildChild));
}

Upvotes: 0

Related Questions