首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在引用的程序集中使用Ninject和Ninject.Extensions.Conventions

在引用的程序集中使用Ninject和Ninject.Extensions.Conventions
EN

Stack Overflow用户
提问于 2013-12-03 12:53:55
回答 1查看 1K关注 0票数 2

我正在尝试将Ninject设置为一个ASP.NET MVC 4项目。

我有3个项目在我的解决方案。主要的mvv4web应用程序,它引用了两个支持程序集(My.Services.dllMy.Repository.dll)。My.Services.dll还引用了My.Repository.dll

我添加了Nuget包: Ninject.MVC3 (版本3.0.0.6)和Ninject.Extensions.Conventions (版本3.0.0.11)

在主web应用程序中,我有一个具有以下构造函数的Home controller

代码语言:javascript
复制
public HomeController(IMyService myService)
{
    _myService = myService;
} 

该服务具有如下构造函数:

代码语言:javascript
复制
public MyService(IMyRepository myRepository)
{
    _myRepository = myRepository;
}

在我的NinjectWebCommon文件中有:

代码语言:javascript
复制
private static void RegisterServices(IKernel kernel)
        {
            kernel.Bind(x =>
            {
                x.FromThisAssembly().SelectAllClasses().BindDefaultInterface();
                //x.FromAssemblyContaining<MyRepository>().SelectAllClasses().BindDefaultInterface();
                //x.FromAssemblyContaining<MyService>().SelectAllClasses().BindDefaultInterface();
                x.From("My.Repository", "My.Services").SelectAllTypes().BindDefaultInterface();

            });
        }         

如果运行应用程序,就会在RegisterServices方法的最后一行上得到一个错误(RegisterServices)。

您可以在代码中看到,我也尝试过x.FromAssemblyContaining<MyRepository>().SelectAllClasses().BindDefaultInterface(),但没有效果。

顺便说一句,如果我将MyServiceMyRepository这两种类型放在web应用程序中而不是附属程序集中,并删除RegisterServices的最后一行,那么所有的依赖项都会被解析,一切都能正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 13:58:49

您只能在一个From... kernel.Bind 调用中使用一个表达式。

因此,在不同的FromAssemblyContaining语句中调用kernel.Bind,它应该工作得很好:

代码语言:javascript
复制
kernel.Bind(x => x.FromThisAssembly()
                  .SelectAllClasses().BindDefaultInterface());
kernel.Bind(x => x.FromAssemblyContaining<MyRepository>()
                  .SelectAllClasses().BindDefaultInterface());
kernel.Bind(x => x.FromAssemblyContaining<MyService>()
                  .SelectAllClasses().BindDefaultInterface());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20351797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档