Проблемы с методом Unity BuildUp - PullRequest
3 голосов
/ 12 марта 2010

Я использую 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 и получил тот же результат. Так что может быть не так с наращиванием?

1 Ответ

5 голосов
/ 16 марта 2010

Нашел, что не так с моим кодом. Проблема была довольно простой: свойство IStock должно быть общедоступным, иначе сборка не заполняет его зарегистрированным значением. Надеюсь, это поможет кому-нибудь в будущем.

...