MvvmCross 解析 IoC 依赖

MvvmCross resolving IoC dependencies

我正在尝试找出声明单例的整个 Mvvm 方式,尤其是那些与 IoC 相关的单例。在我的特定示例中,我有一个 UserService,它需要一个 IDatabase 和一个 IMvxMessenger 作为 IoC 依赖项。

IDatabase 是特定于平台的,所以在我的 Droid.UI 项目中,我使用以下代码解决了这个问题:

var database = new Database(new SQLitePlatformAndroid(), Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "database.db"));
database.Initialize();
Mvx.RegisterSingleton<IDatabase>(database);

在我的 .Core 项目中,我有以下代码:

var database = Mvx.Resolve<IDatabase>();
var messenger = Mvx.Resolve<IMvxMessenger>();
Mvx.RegisterSingleton<IUserService>(new UserService(database, messenger));

我正在努力解决这个问题。 Mvx.Resolve 的真正工作是什么以及它如何与解决其他依赖项一起工作。我已经测试了上面的代码,但它似乎没有用,所以我知道我在这里遗漏了一些重要的东西。

如有任何帮助,我们将不胜感激,提前致谢!

按照这个 link 到 Service Location and Inversion of Control page for MvvmCross and look at Constructor Injection and Lazy Singleton

不是在注册下一个时解析依赖关系,而是在初始化 UserService 实例时解析它。