通过MvvmCross的IoC向class的构造函数传递参数
Passing parameters to the constructor of a class through MvvmCross's IoC
我有一个 MvvmCross 项目,我在其中定义了一个 Database
class(实现了一个 IDatabase
"service")。此 class 在构造函数中需要一个参数(连接字符串)。
当然,参数在应用程序项目级别(在我的例子中是 WPF)是已知的,而不是在实现 Database
class 的库级别。
我的问题是:通过IoC容器创建Database
对象时,如何传递参数?
我想我应该做类似于
的事情
Mvx.RegisterType<IDatabase>(() => new Database("my connection string"));
但是我找不到合适的地方来写这个调用。顶级 WPF 项目中的 App
class 与 "Core" 项目的 App
class 没有任何关系,所以我无法利用抽象继承。
这在 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);
我终于找到了。我在问题中写的那行实际上是正确的:
Mvx.RegisterType<IDatabase>(() => new Database("my connection string"));
我想念的是把那条线放在哪里。正确的位置是在应用程序级别的 MySetup
class 中,它扩展了 MvxWpfSetup<MyApp>
- 准确地说,在 InitializeLastChance()
方法中,它在 之后被调用 您应用程序的 Initialize()
方法 class(MyApp
,正如我之前所说的)。
我有一个 MvvmCross 项目,我在其中定义了一个 Database
class(实现了一个 IDatabase
"service")。此 class 在构造函数中需要一个参数(连接字符串)。
当然,参数在应用程序项目级别(在我的例子中是 WPF)是已知的,而不是在实现 Database
class 的库级别。
我的问题是:通过IoC容器创建Database
对象时,如何传递参数?
我想我应该做类似于
的事情Mvx.RegisterType<IDatabase>(() => new Database("my connection string"));
但是我找不到合适的地方来写这个调用。顶级 WPF 项目中的 App
class 与 "Core" 项目的 App
class 没有任何关系,所以我无法利用抽象继承。
这在 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);
我终于找到了。我在问题中写的那行实际上是正确的:
Mvx.RegisterType<IDatabase>(() => new Database("my connection string"));
我想念的是把那条线放在哪里。正确的位置是在应用程序级别的 MySetup
class 中,它扩展了 MvxWpfSetup<MyApp>
- 准确地说,在 InitializeLastChance()
方法中,它在 之后被调用 您应用程序的 Initialize()
方法 class(MyApp
,正如我之前所说的)。