gpt4 book ai didi

ninject - V2 Ninject 绑定(bind)到 V3 的转换

转载 作者:行者123 更新时间:2023-12-02 00:20:43 25 4
gpt4 key购买 nike

我已经为此苦苦思索了大约 8 个小时,而且我似乎找不到关于如何为 ninject 更改我的自定义 Bootstrap 的简单解释(最后一次处理代码回到 v2.x.x.x ) 到新的 v3.0.0.0 语法。

我目前有以下内容:

public class NinjectCustomBootStrapper : NinjectNancyBootstrapper
{
protected override Ninject.IKernel GetApplicationContainer()
{
return Program.MyContainer;
}

}

在分隔类中,并且:

public static IKernel MyContainer
{
get { return _myContainer ?? (_myContainer = CreateKernel()); }
set { _myContainer = value; }
}

private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<CardMonitorService>().ToSelf().InSingletonScope();
return kernel;
}

在命令行应用程序中我的主程序“Program.c”中。

自从将 ninject 更新到 V3.0.0.0 后,我发现有一些重大更改。我承认我不经常使用 ninject(我通常使用 structuremap),这个项目使用的唯一原因是我最初没有编写它。

自从我升级了 Ninject 后,现在当应用程序启动时出现以下异常:

Method not found: 'Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax`1<!0>
Ninject.Syntax.IBindingToSyntax`1.ToConstant(!0)'.

经过大量的搜索和研究,我能找到的最接近的是:

http://sharpfellows.com/post/Ninject-Auto-registration-is-changing-in-version-3.aspx

虽然它为我指明了正确的方向,但仍然不是一个完整的解决方案,因为我没有使用自定义绑定(bind)生成器。

所以我的问题是这样的。

我如何重写上面的内容,以便我的项目再次运行,并且 WCF 服务在被调用时会在收到请求时将正确的单例绑定(bind)传递给它。回到 ninject 2 不是一个选项,因为其他依赖项在已添加的项目已强制进行 v3 升级,并且这些添加了已请求的新功能,因此我正在处理它。

作为引用,这是一个 .NET4 版本,在 NancyFX 上运行,自托管 WCF 设置为 Windows 服务,使用 Topshelf 提供 SCM 接口(interface)。

干杯

美女

附录,让事情更清楚一些

这是一个最初写在某个时候的现有项目,我被要求向该项目添加一些新功能。

作为添加这些新功能的一部分,我需要将正在使用的 Ninject 版本从早期版本升级到 V3.0.0.0,因为添加到项目的新依赖项需要更新版本的 Ninject。

在之前的 Ninject V2 下,我上面给出的代码运行良好,没有任何问题,因为项目已经添加了 Ninject V3,我现在得到如上所述的异常。

我无法返回到 Ninject 的早​​期版本,因为那将意味着无法添加我正在添加的新功能。

根据我迄今为止所做的研究,上面的 sharpfellows 链接是迄今为止我在 Internet 上设法找到的对我的问题最接近的解释。

我不经常使用 Ninject,所以我不知道 V2 和 V3 之间发生了什么变化(根据我的研究)是我的问题的原因。

我需要知道如何更改我在 V2 下编写的代码(如上所示),以便它在 V3 下工作。

最佳答案

MissingMethodException 通常是部署问题。您针对与部署不同的程序集进行编译。检查您是否部署了相同的版本和相同的构建。

关于ninject - V2 Ninject 绑定(bind)到 V3 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049691/

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