Я использую Unity App Block для своего проекта (версия 1.2.0.0).
У меня проблема с методом Unity Container 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; }
Итак, после наращивания Stock свойство все еще пусто. Метод разрешения прекрасно работает для IStock с тем же контейнером и конфигурацией. Я попытался создать простой тестовый класс с одним свойством IStock и получил тот же результат. Так что может быть не так с наращиванием?