Ninject:在库中也使用配置

时间:2013-02-18 14:17:30

标签: c# ninject ninject.web.mvc

我从Ninject开始,我在MVC 4场景中使用它并在" NinjectWebCommon"中配置我的绑定。 一切正常。

现在我想在一个库中以某种方式从MVC app获取内核配置。

例如: 在我的MVC项目中,我有类" BaseController"有财产

[Inject]
public IKernel Ninject { get; set; }

工作完美,意味着在控制器中的每个动作中都从BaseController继承属性" Ninject"是很好的实例,而不是null!

现在我上课了#34; NinjectProxy"在我的外部库中具有完全相同的属性,但每次我创建一个新的实例" NinjectProxy"道具" Ninject"是空的!

public class NinjectProxy
{
    [Inject]
    public IKernel Ninject { get; set; }


    public T Resolve<T>()
    {
        return Ninject.Get<T>();
    }
}

我的完整解决方案如下:

MVC app
- Reference on Common.dll and Ninject
- Contains ControllerBase
Common.dll
- This project contains the NinjectProxy class and have a reference on Ninject
- Here I want somehow get the kernel config that I configured in the mvc app to resolve dependecies
Implementation.dll
- References on Common.dll and Ninject

lib被加载到&#34; NinjectWebCommon&#34;用:

kernel.Load(Assembly.Load("lib"))

如果这很重要。

让某人知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

您正在使用new手动创建实例。此对象不由ninject处理,永远不会获得依赖项。

在某处注入实例或使用factory让它由ninject创建

但是Ruben绝对是对的,你正在遵循一种你不应该使用的模式。而是在引导程序中完全配置Ninject。使用与整个项目匹配的约定或引用所有必需的程序集并为它们设置绑定。