加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如果Ninject尚未绑定,如何在Ninject中绑定?

发布时间:2020-12-16 04:26:24 所属栏目:asp.Net 来源:网络整理
导读:是否可以将Ninject配置为在绑定时不绑定依赖项. 例如. 如果我们加载一个名为Client1的模块,其中包含: public class Client1Module:NinjectModule{ public override void Load() { BindIService.ToFancyService() }} 然后我们加载一个名为Base contains的模
是否可以将Ninject配置为在绑定时不绑定依赖项.

例如.

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

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

然后我们加载一个名为Base contains的模块

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

我们希望确保BasicService不受约束,系统始终使用FancyService.我们不会在设计时知道FancyService是否存在.如果找到Client1模块,则会加载它.

我并不想在每次注射等问题上都有一堆重复的锅炉板代码.因为有50-60个依赖项,所有这些都可以在客户端模块中进行更改.

有任何想法吗?

解决方法

您必须确保在Client1Module之后加载BaseModule:
public class BaseModule: NinjectModule
    {
        public override void Load()
        {
            if (!Kernel.GetBindings(typeof(IService)).Any())
            {
                Bind<IService>().To<BasicService>();
            }
        }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读