我有一个MvvmCross项目,我在其中定义了一个Database
类(实现IDatabase
"服务")。此类需要构造函数中的参数(连接字符串)。
当然,该参数在应用程序项目级别(在我的情况下是WPF)中是已知的,而不是在实现Database
类的库级别。
我的问题是:当通过IoC容器创建Database
对象时,如何传递参数?
我想我应该做类似的事情
Mvx.RegisterType<IDatabase>(() => new Database("my connection string"));
但我找不到写这个电话的正确位置。顶级WPF项目中的App
类与&#34; Core&#34;的App
类无关。项目,所以我也不能利用抽象继承。
答案 0 :(得分:2)
这在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);
答案 1 :(得分:0)
我终于找到了。我在问题中写的这条线实际上是对的:
Mvx.RegisterType<IDatabase>(() => new Database("my connection string"));
我缺少的是放置那条线的位置。正确的位置位于MySetup
类,在应用程序级别,扩展MvxWpfSetup<MyApp>
- 正是在InitializeLastChance()
方法中,在之后被称为 { {1}}我的App类的方法(Initialize()
,就像之前我所说的那样)。