Unity не внедряет зависимости, определенные в базовом классе - PullRequest
4 голосов
/ 16 марта 2011

Я интегрирую Unity 2.0 в свое приложение ASP.NET (используя подход UnityPageHandlerFactory) и у меня все работает отлично, пока я не попытался переместить одну из зависимостей в класс PageBase, который затем будет использоваться всеми страницами. Это свойство никогда не устанавливается при вызове BuildUp.

Я использую класс UnityPageHandlerFactory, описанный здесь , который использует метод BuildUp (тип, объект) для вставки зависимостей в каждую страницу при ее запросе. Пока у меня есть свойства, определенные в объявленном типе, свойства вводятся. Но свойства, определенные в базовом классе, никогда не устанавливаются.

Есть ли что-то еще, что мне нужно сделать? Мне кажется, что это должно быть автоматическим.

Ответы [ 2 ]

4 голосов
/ 31 марта 2011

Оказывается, что я использовал другую перегрузку метода BuildUp и решил использовать проблему, приведенную в приведенном примере.

Я использовал BuildUp (объект), и он не работал. Когда я переключился на BuildUp (Тип, объект), все работает как шарм!

Я не уверен, почему, но могу только предположить, что это связано с тем, как тип разрешается при первой перегрузке, а не с тем, что происходит, когда тип явно указан.

В любом случае, внесение этого небольшого изменения устранило все мои проблемы.

1 голос
/ 17 марта 2011

Можете ли вы показать соответствующие части вашего кода?Это то, что у меня есть, и это, кажется, работает:

    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);

            }
    }

Я также протестировал это с UnityPageHandlerFactory в приложении asp.net и аналогично вижу, что InjectedClass внедряется в мою страницу, хотя свойство зависимости находитсябазовый класс.

...