Unity不注入基类中定义的依赖项

时间:2011-03-16 17:41:52

标签: inheritance dependency-injection unity-container

我正在将Unity 2.0集成到我的ASP.NET应用程序中(使用UnityPageHandlerFactory方法),并且一切都运行良好,直到我尝试将其中一个依赖项移动到一个PageBase类,然后由所有页面共享。调用BuildUp时,永远不会设置此属性。

我正在使用描述here的UnityPageHandlerFactory类,它使用BuildUp(type,object)方法在请求时将依赖项注入每个页面。只要我具有在声明的类型中定义的属性,就会注入属性。但是从不设置基类中定义的属性。

我还需要做些什么吗?在我看来,这应该是自动的。

2 个答案:

答案 0 :(得分:4)

事实证明,我正在使用BuildUp方法的不同重载,并且与引用示例中的那个一起修复我的问题。

我正在使用BuildUp(对象),但它无法正常工作。当我切换到BuildUp(Type,object)时,一切都像魅力一样!

我不确定为什么,但只能假设它与在第一次重载中解析类型的方式有关,而不是在显式提供类型时发生的情况。

无论哪种方式,这个小小的改变都解决了我所有的问题。

答案 1 :(得分:1)

您能否展示代码的相关部分?这就是我所拥有的,这似乎有效:

    class InjectedClass
    {

    }

    class  MyBase
    {
            [Dependency]
            public InjectedClass Dependency { get; set; }
    }

    class MyClass : MyBase
    {

    }

    class Program
    {
            static void Main(string[] args)
            {
                    UnityContainer uc = new UnityContainer();
                    uc.RegisterType<InjectedClass>();

                    MyClass m = new MyClass();
                    uc.BuildUp(m);

            }
    }

我还在asp.net应用程序中使用UnityPageHandlerFactory对此进行了测试,同样可以看到InjectedClass被注入到我的页面中,尽管依赖属性在基类上。

相关问题