2015-02-27 2 views
0

Некоторые члены нашего devteam просто потратили некоторое время на отладку аналогичной проблемы.ServiceStack FunQ Container setting public Members to null

Класс RegisterAs, используемый в одном из наших unittests, имеет открытый член: public List Mails {get; задавать; }

Когда этот класс разрешен через Funq, член имеет значение null, хотя он был установлен в конструкторе.

Наши сотрудники согласны с тем, что этот член задан равным нулю в Funq, когда член не является типом, зарегистрированным в качестве контейнера.RegisterAs <>.

настоящее время мы используем ServiceStack версию 4.0.33

Было бы неплохо иметь возможность настроить ServiceStack.Funq на не сенсорными представителей общественности, если они не реализовать Thats интерфейса Зарегистрированные в Funq.

ответ

1

В AutoWiring в IOC ServiceStack используется предварительно скомпилированное выражение для populate all public instance properties. В то время, когда статическая фабрика создана, она не знает всех зарегистрированных зависимостей, которые существуют, но созданный фабрика автоматически обновляет каждое общедоступное свойство записи.

Если вы хотите другое поведение вы можете использовать свой собственный завод, например:

container.Register<IDependency>(c => new Dependency(c.Resolve<IFoo>()) { 
     Bar = c.Resolve<IBar>() 
    }) 
Смежные вопросы