Unity是否提供类似于Ninject自定义提供程序的任何内容?

时间:2011-03-03 09:39:34

标签: dependency-injection unity-container ioc-container ninject

Unity(任何版本)是否提供了与here所述的Ninject自定义提供程序类似的内容?我需要在类型解析点访问上下文信息。具体来说,我需要访问调用解决方案的类型。

1 个答案:

答案 0 :(得分:3)

我不确定你是否可以直接这样做,但我认为你可以通过以下方式实现类似的目标:

    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>();