通过MvvmCross的IoC

时间:2018-06-11 16:31:59

标签: c# mvvmcross

我有一个MvvmCross项目,我在其中定义了一个Database类(实现IDatabase"服务")。此类需要构造函数中的参数(连接字符串)。

当然,该参数在应用程序项目级别(在我的情况下是WPF)中是已知的,而不是在实现Database类的库级别。

我的问题是:当通过IoC容器创建Database对象时,如何传递参数?

我想我应该做类似的事情

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

但我找不到写这个电话的正确位置。顶级WPF项目中的App类与&#34; Core&#34;的App类无关。项目,所以我也不能利用抽象继承。

2 个答案:

答案 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(),就像之前我所说的那样)。