unity-container - 统一容器能否将自身的引用作为构造函数参数传递?

标签 unity-container

统一容器是否可以将自身传递给对象?

即:

public class Something {

     public Something(IUnityContainer container) {
           ...
     }
}

最佳答案

简短的答案是肯定的。

当您使用Resolve方法时,应该自动将其传递。

例如:

IUnityContainer container = new UnityContainer();
var something = container.Resolve<Something>();


此外,如果您要研究的话,这与Prism(在CodePlex上)使用的技术相同。

更新添加的测试:

[TestClass]
public class Spike
{
    [TestMethod]
    public void unityTest()
    {
        var container = new UnityContainer();
        var something= container.Resolve<Something>();
        Assert.AreSame(container, something.Container);
        // This passes. Success.
    }
}

public class Something
{
    public Something(IUnityContainer container)
    {
        Container = container;
    }

    public IUnityContainer Container { get; set; }
}

关于unity-container - 统一容器能否将自身的引用作为构造函数参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/827756/

相关文章:

c# - 如何使用 Unity 解决静态类中的依赖关系?

c# - 异常(exception)是 : InvalidOperationException - The current type, 是一个接口(interface),无法构造。您是否缺少类型映射?

c# - Unity - 如何对同一类型使用多个映射并注入(inject)到一个对象中

c# - MVC 5 和 Unity IoC 中的 AccountController

silverlight - 如何获取unitycontainer的实例?

c# - 将动态对象映射到接口(interface)并向 IoC 注册

c# - 使用 Unity/Prism/MVVM 的 ObjectContext 构造函数注入(inject)

c# - 带有 DataReader 的 AutoMapper DynamicMap 针对接口(interface)

c# - 有人可以解释 Microsoft Unity 吗?

c# - 统一: No parameterless constructor defined for this object.