我正在将Unity 2.0集成到我的ASP.NET应用程序中(使用UnityPageHandlerFactory方法),并且一切都运行良好,直到我尝试将其中一个依赖项移动到一个PageBase类,然后由所有页面共享。调用BuildUp时,永远不会设置此属性。
我正在使用描述here的UnityPageHandlerFactory类,它使用BuildUp(type,object)方法在请求时将依赖项注入每个页面。只要我具有在声明的类型中定义的属性,就会注入属性。但是从不设置基类中定义的属性。
我还需要做些什么吗?在我看来,这应该是自动的。
答案 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被注入到我的页面中,尽管依赖属性在基类上。