Wiki

Clone wiki

HaveBox / Config injection setups

Home - News - Documentation

Given:

#!CSharpLexer

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="FirstWord" value="Hello"/>
    <add key="SecondWord" value="World"/>
  </appSettings>
</configuration>

#!CSharpLexer

namespace HaveBoxExample
{
    public interface IHelloWorldProvider
    {
        string GetHelloWorld();
    }

    public class HelloWorldProvider : IHelloWorldProvider
    {
        private readonly IKeyValueSet _firstWord;
        private readonly IKeyValueSet _secondWord;

        public HelloWorldProvider(IKeyValueSet FirstWord, IKeyValueSet SecondWord)
        {
            _firstWord = FirstWord;
            _secondWord = SecondWord;
        }

        public string GetHelloWorld()
        {
            return _firstWord.Value + " " + _secondWord.Value;
        }
    }
}

Manual:

#!CSharpLexer

namespace HaveBoxExample
{
    public class HelloWorld
    {
        static void Main(string[] args)
        {
            var container = new Container();
            container.Configure(config => config.MergeConfig<ConfigInjection>());

            var firstWord = container.GetInstance<IKeyValueSet>("FirstWord");
            var secondWord = container.GetInstance<IKeyValueSet>("SecondWord");

            Console.Out.WriteLine(firstWord.Value + " " + secondWord.Value);
        }
    }
}

Auto:

#!CSharpLexer

namespace HaveBoxExample
{
    public class HelloWorld
    {
        static void Main(string[] args)
        {
            var container = new Container();
            container.Configure(config => {
                config.MergeConfig<ConfigInjection>()
                config.For<IHelloWorldProvider>().Use<HelloWorldProvider>()
            });

            var helloWorld = container.GetInstance<IHelloWorldProvider>();

            Console.Out.WriteLine(helloWorld.GetHelloWorld());
        }
    }
}

Updated