Wiki

Clone wiki

HaveBox / Assembly scan setups

Home - News - Documentation

Given:

#!CSharpLexer

ExampleAssembly.dll:

namespace HaveBoxExample
{
    public interface IHelloProvider
    {
        string GetHello();
    }

    public interface IWorldProvider
    {
        string GetWorld();
    }

    public class HelloProvider : IHelloProvider
    {
        public string GetHello()
        {
            return "Hello";
        }
    }

    public class WorldProvider : IWorldProvider
    {
        public string GetWorld()
        {
            return "World";
        }
    }

    public interface IHelloWorldProvider
    {
        string GetHelloWorld();
    }

    public class HelloWorldProvider : IHelloWorldProvider
    {
        public readonly IHelloProvider _helloProvider;
        public readonly IWorldProvider _worldProvider;

        public HelloWorldProvider(IHelloProvider helloProvider, IWorldProvider worldProvider)
        {
            _helloProvider = helloProvider;
            _worldProvider = worldProvider;
        }

        public string GetHelloWorld()
        {
            return _helloProvider.GetHello() + " " + _worldProvider.GetWorld();
        }
    }
}

SimpleScanner setup:

#!CSharpLexer

using HaveBox;
using System;
using System.Reflection;

namespace HaveBoxExample
{
    class Helloworld
    {
        static void Main(string[] args)
        {
            var assembly = Assembly.GetAssembly(typeof(HelloWorldProvider));
            var container = new Container();
            container.Configure(config => config.MergeConfig(new SimpleScanner(assembly)));

            var helloWorldProvider = container.GetInstance<IHelloWorldProvider>();
            Console.Out.WriteLine(helloWorldProvider.GetHelloWorld());
        }
    }
}

Updated