gpt4 book ai didi

c# - 使用 Caliburn Micro & Ninject 设置依赖注入(inject)

转载 作者:太空狗 更新时间:2023-10-29 21:44:20 25 4
gpt4 key购买 nike

我正在尝试使用 Caliburn Micro 和 Ninject 框架在新的 WPF 项目中设置依赖项注入(inject)。不幸的是我没有成功:(互联网上有一些实现通用 Bootstrap 的示例,但对我来说,通用 Bootstrap 类不可用,并且由于所有这些示例至少已有 3 年历史,我猜它们已被弃用......

我试过的是:

public class CbmBootstrapper : BootstrapperBase
{
private IKernel kernel;

protected override void Configure()
{
this.kernel = new StandardKernel();

this.kernel.Bind<IAppViewModel>().To<AppViewModel>();
}
}

在 App.xaml 中

<Application x:Class="CBMExample.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:local="clr-namespace:CBMExample"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:CbmBootstrapper x:Key="bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

我对 WPF 和 Ninject 很陌生。你能告诉我我必须更改什么,以便在应用程序启动时加载具有相应 ViewModel (AppViewModel) 的 View (AppView) 吗?

您是否知道有关使用和设置 Ninject 与 Caliburn Micro 的最新教程?

最佳答案

您还需要覆盖 OnStartup 以显示您的 Root View / View 模型:

protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
{
DisplayRootViewFor<IAppViewModel>();
}

这个额外的调用取代了之前的通用 Bootstrap ,并允许您在运行时为您的应用程序选择 Root View 。

您还需要覆盖 GetInstance 以使 Caliburn Hook 到 Ninject:

protected override object GetInstance(Type serviceType, string key)
{
return container.Get(serviceType);
}

只要 Caliburn.Micro 需要构造某些东西,它就会调用它,因此它是您将 Ninject(其他 IoC 容器可用!)注入(inject)流程的一站式商店。

至于最新的教程;自从 Caliburn.Micro 进入第 2 版以来,周围就没有那么多了,但是他们的 official documentation通常非常有用。

编辑:你还需要做一件事!确保您的 Bootstrap 构造函数调用 Initialize:

public CbmBootstrapper ()
{
Initialize();
}

这将使 Caliburn.Micro 开始行动......

关于c# - 使用 Caliburn Micro & Ninject 设置依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com