Unity предлагает что-то похожее на пользовательских провайдеров Ninject? - PullRequest
1 голос
/ 03 марта 2011

Unity (любая версия) предоставляет что-то похожее на пользовательские провайдеры Ninject, как описано здесь ?Мне нужно получить доступ к контекстной информации в точке разрешения типа.В частности, мне нужен доступ к типу, который вызвал разрешение.

1 Ответ

3 голосов
/ 03 марта 2011

Я не уверен, что вы можете сделать это напрямую, но я думаю, что вы могли бы достичь чего-то подобного, выполнив следующее:

    public interface IMyType
{
    //whatever you need
}

public interface IMyTypeProvider
{
    IMyType Create(object context);
}

public class MyTypeProvider : IMyTypeProvider
{
    public IMyType Create(object context)
    {
        //construct required instance based on context
    }
}

public class ClassWhichNeedsMyType
{
    public ClassWhichNeedsMyType(IMyTypeProvider provider)
    {
        this.myType = provider.Create(this);
    }

    private IMyType myType;
}

затем зарегистрируйте провайдера в контейнере и используйте его для построения вашей зависимости:

container.RegisterType<IMyTypeProvider, MyTypeProvider>();
...