Search code examples
c#.netdependency-injectionunity-container

How to inject constructor argument from config file with Unity


Imagine we have a class

public class MyClass
{
    private string _val;
    public MyClass(string val) 
    {
         _val = val;
    }
}

and app.config (or web.config)

<appSettings>
    <add key="value" value="some value" />
</appSettings>

Is there way to register type MyClass in Unity container and point Unity to inject value for val constructor parameter from config file?


Solution

  • it is very easy.

    C# Code:

    var container = new UnityContainer();
    container.LoadConfiguration();
    MyClass mc = container.Resolve<MyClass>();
    

    Configuration file:

    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">    
     <container>
      <register type="[namespace].MyClass, [assembly-name]" 
        mapTo="[namespace].MyClass, [assembly-name]">
        <constructor>
          <param name="val" value="Ethan Woo"/>
        </constructor>
      </register>
    </container>