Как внедрить реализации Log4Net ILog с помощью Unity 2.0

В конечном итоге это связано с настройкой log4Net, но в целом проблема не связана с регистрацией.

В общем, я пытаюсь понять, как сделать в Microsoft Unity 2.0 нечто эквивалентное тому, что можно получить с помощью Castle.Facilities.Logging.LoggingFacility. А именно возможность объявить зависимость от регистратора и инициализировать регистратор с помощью Типа объекта, в который он вводится.

В духе теста стоит тысячи слов, вот что мне нужно:

class Logger_IOC_Tests
{
    //[Test] 
    public void Logger_should_be_initialized_with_the_type_of_the_object_that_is_using_it()
    {
        var container = new UnityContainer();
        /* Configuration Magic probably involiving registering either 
            * a custom IDependencyResolverPolicy or BuilderStrategy
            * goes here...
            */
        container.RegisterType<LoggerUser>(new ContainerControlledLifetimeManager());

        var user = container.Resolve<LoggerUser>();

        Assert.True(user.Logger.GetUserType() == user.GetType());
    }
}

interface ILogger
{
    Type GetUserType();
}

class Logger : ILogger
{
    private readonly Type _type;

    public Logger(Type type)
    {
        _type = type;
    }

    public Type GetUserType()
    {
        return _type;
    }
}

class LoggerUser
{
    public readonly ILogger Logger;

    public LoggerUser(ILogger logger)
    {
        Logger = logger;
    }
}
20
задан yvesmancera 6 August 2018 в 15:39
поделиться