代码之家  ›  专栏  ›  技术社区  ›  Bartosz

对于已经存在Ninject约定绑定的接口,可以使用显式绑定吗?

  •  1
  • Bartosz  · 技术社区  · 7 年前

    绑定可用。匹配绑定:1)绑定自 IInitialUploadFolderCleaner到InitialUploadFolderCleaner 2)绑定 建议:1)确保您已经为 IInitialUploadFolderCleaner仅一次。

    BindDefaultInterface() 方法,但是对于这个类,我想添加一个构造函数参数-一个字符串。
    为了实现这一点,我想指定显式绑定,希望ninject只在没有找到显式绑定时使用默认绑定。

      kernel.Bind<IInitialUploadFolderCleaner>().To<InitialUploadFolderCleaner>().WithConstructorArgument("siteRootPath", HostingEnvironment.ApplicationPhysicalPath);
    
    
            kernel.Bind(x =>
            {
                x.FromAssembliesMatching("MyPrefix.*")
                    .SelectAllClasses()
                    .BindDefaultInterface();
            });
    

    然而,事实证明它不是这样工作的,或者它需要一些额外的设置。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jan Muncinsky    7 年前

    您应该能够在基于约定的绑定中排除特定类型,以便仍然可以为它们编写显式绑定。

       kernel.Bind<IInitialUploadFolderCleaner>().To<InitialUploadFolderCleaner>().WithConstructorArgument("siteRootPath", HostingEnvironment.ApplicationPhysicalPath); 
    
       kernel.Bind(x =>
        {
            x.FromAssembliesMatching("MyPrefix.*")
                .SelectAllClasses()
                .Excluding<InitialUploadFolderCleaner>()
                .BindDefaultInterface();
        });