gpt4 book ai didi

asp.net - 仅当接口(interface)尚未绑定(bind)时,如何在 Ninject 中绑定(bind)接口(interface)?

转载 作者:行者123 更新时间:2023-12-02 06:32:20 24 4
gpt4 key购买 nike

如果已经绑定(bind)了依赖项,是否可以将 Ninject 配置为不绑定(bind)依赖项。

例如

如果我们加载一个名为 Client1 的模块,其中包含:

public class Client1Module:NinjectModule
{
public override void Load()
{
Bind<IService>.To<FancyService>()
}
}

然后我们加载一个名为 Base 的模块,其中包含

public class BaseModule:NinjectModule
{
public override void Load()
{
Bind<IService>.To<BasicService>()
}
}

我们希望确保BasicService 未被绑定(bind),并且系统始终使用FancyService。我们在设计时并不知道 FancyService 是否存在。如果找到了 Client1 模块,则加载该模块。

我真的不想在每次注入(inject)等周围都有一堆重复的样板代码。因为有 50-60 个依赖项,所有这些依赖项都可以在客户端模块中更改。

有什么想法吗?

最佳答案

您必须确保 BaseModule 在 Client1Module 之后加载:

   public class BaseModule: NinjectModule
{
public override void Load()
{
if (!Kernel.GetBindings(typeof(IService)).Any())
{
Bind<IService>().To<BasicService>();
}
}
}

关于asp.net - 仅当接口(interface)尚未绑定(bind)时,如何在 Ninject 中绑定(bind)接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12316215/

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