Передача параметров конструктору класса через IoC MvvmCross - PullRequest
0 голосов
/ 11 июня 2018

У меня есть проект MvvmCross, в котором я определил класс Database (реализующий IDatabase «службу»).Этому классу нужен параметр (строка подключения) в конструкторе.

Конечно, параметр известен на уровне проекта приложения (в моем случае WPF), а не на уровне библиотеки, реализующей класс Database.

Моя проблема: как передать параметр при создании объекта Database через контейнер IoC?

Я думаю, что должен сделать что-то похожее на

Mvx.RegisterType<IDatabase>(() => new Database("my connection string"));

но я не могу найти правильное место, чтобы написать этот звонок.Класс App в проекте WPF верхнего уровня никоим образом не связан с классом App проекта "Core", поэтому я также не могу использовать абстрактное наследование.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Я наконец узнал это.Строка, которую я написал в вопросе, на самом деле была правильной:

Mvx.RegisterType<IDatabase>(() => new Database("my connection string"));

Что мне не хватало, так это где поставить эту строку.Правильное место в классе MySetup, на уровне приложения, который расширяет MvxWpfSetup<MyApp> - точно, в методе InitializeLastChance(), который вызывается после метода Initialize() вашего класса App(MyApp, как я это называл раньше).

0 голосов
/ 13 июня 2018

Это возможно в 6.1.Также см .: https://github.com/MvvmCross/MvvmCross/pull/2814

var title = "The title";
var subtitle = "The subtitle";
var description = "The description";

var arguments = new { title, subtitle, description };
var d = Mvx.IoCConstruct<Database>(arguments);
...