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 实例时解析它。
我正在尝试找出声明单例的整个 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 实例时解析它。