我正在为我的项目使用Unity App Block(版本1.2.0.0)。 我有一个Unity容器BuildUp方法的问题,我正在使用我的ascx控件。这是一些代码(非常简单)
public class BaseUserControl<T>:UserControl where T:class
{
protected override void OnInit(EventArgs e)
{
InjectDependencies();
base.OnInit(e);
}
protected virtual void InjectDependencies()
{
var context = HttpContext.Current;
if (context == null)
{
return;
}
var accessor = context.ApplicationInstance as IContainerAccessor;
if (accessor == null)
{
return;
}
var container = accessor.Container;
if (container == null)
{
throw new InvalidOperationException("No Unity container found");
}
container.BuildUp<T>(this as T);
}
}
在我的解决方案中,在ascx控件的基本控件中调用此方法。这里应该注入儿童控制的属性:
[Dependency]
private IStock Stock { get; set; }
所以在建立股票后,房产仍然是空的。 Resolve方法适用于具有相同容器和配置的IStock。我尝试使用只有一个属性IStock的简单测试类进行构建并获得相同的结果。那么构建会出现什么问题?
答案 0 :(得分:5)
发现我的代码出了什么问题。问题非常简单:属性IStock应该是公共的,或者在其他情况下,builddup不会用注册值填充它。希望它能在将来帮助某人。