【问题标题】:MvvmCross resolving IoC dependenciesMvvmCross 解决 IoC 依赖关系
【发布时间】:2017-12-07 10:00:58
【问题描述】:

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

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 的真正工作是什么以及它如何与解决其他依赖项一起工作。我已经测试了上面的代码,但它似乎没有工作,所以我知道我在这里遗漏了一些重要的东西。

对此的任何帮助将不胜感激,在此先感谢您!

【问题讨论】:

    标签: xamarin inversion-of-control mvvmcross


    【解决方案1】:

    点击此链接到 MvvmCross 的 Service Location and Inversion of Control 页面并查看 Constructor InjectionLazy Singleton

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

    【讨论】:

    • 对不起,我没有关注。你能给出示例代码吗?用于 UI 和 Core
    • 我想我需要进一步阅读它。我能够通过注册类型使其工作。太棒了!但我仍然无法理解每个原因,所以也许进一步阅读会有所帮助。谢谢。
    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2017-02-20
    相关资源
    最近更新 更多