Нет конструктора без параметров для PhoneApplicationPage - PullRequest
1 голос
/ 17 июля 2011

У меня есть приложение для Windows Phone с Ninject IOC.

В какой-то момент я понял, что мой MainPage.xaml.cs (первая страница приложения, которая инициализируется первой) должен иметь конструктор с параметрами.

Я добавил параметры в конструктор, как это:

public partial class MainPage : PhoneApplicationPage
    {
        private readonly Settings _settings;

        // Constructor
        public MainPage(Settings _settings)

В моих модулях Ninject у меня есть привязка для типа настроек:

this.Bind<Settings>().ToSelf().InSingletonScope();

Однако, когда бы яПри запуске приложения я получаю исключение MissingMethodException при запуске.

Я обошел эту проблему, сохранив конструктор без параметров в MainPage (), и использую шаблон локатора служб с Ninject для получения экземпляра Settings.

Я хочу знать, есть ли для меня способ, чтобы мой локатор службы приложений оставался свободным?

1 Ответ

3 голосов
/ 18 июля 2011

Боюсь, это невозможно из-за того, как работает навигация Silverlight. Вы должны иметь конструктор без параметров. Обычно вы используете сервисный локатор для разрешения вашей ViewModel, в которую вам нужно ввести зависимости, а не представление.

В качестве дополнительного примечания не думайте, что вы должны разрабатывать свои мобильные приложения так же, как и приложения для настольных компьютеров. Те же правила не применяются автоматически. IOC - это шаблон корпоративного дизайна, цель которого - уменьшить сложность больших приложений, разработанных многими разработчиками в течение длительных периодов времени. Телефонные приложения, как правило, представляют собой небольшие приложения, и лишь немногие разработчики разрабатывали их в течение коротких периодов времени, поэтому не обязательно, чтобы вы строго следовали шаблону проектирования буквально или даже вообще.

...