通过注入 IUnityContainer 解决 Unity 和循环依赖

Unity and circular dependency resolution by injecting IUnityContainer

Unity 存在循环引用问题。我目前的设计类似于复合模型,例如

public interface IInterface {
}

public class Implementation : IInterface{
    [Dependency]
    public IInterface[] Children{get;set;}
}

我希望注入 Implementation.Children 的 IInterface 集合包含 IInterface 的所有实现(包括 class 实现)。

我的一个解决方案是在运行时动态解析子 属性 而不是 IOC 注入它们。但是为了能够做到这一点,我需要访问 IUnityContainer。

是否可以将 IUnityContainer 注入到实现中?

我不想要 IUnityContainer 的全局单例,因为这些 class 由不同的应用程序使用,每个 initializing/instantiating 容器都不同。

提前致谢

Is it possible to inject IUnityContainer into Implementation?

您可以只将容器声明为依赖项:

[Dependency]
public IUnityContainer Container { get; set; }

容器将自己注入属性;您甚至不需要明确注册它。