2012-05-23 68 views
1

我正在使用Ninject.MVC3。Ninject属性或构造注入ASP.NET MVC3

private static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<Repository>().To<Repository>(); 
}  

在App_Start中像这样注册它们。 它在请求此存储库的控制器上工作得很好。 但是我也有一些需要这个仓库的类。

 [Inject] 
     public MemberShipService(Repository repository) 
     { 
      this.Repository = repository; 
     } 

^来自类构造函数的示例。 我试过构造函数注入这只是给我错误,因为它请求构造函数的参数。 属性注入根本不起作用。

我是否需要做额外的事情才能在asp.net mvc3中进行构造函数或属性注入工作?我没有在NinjectWebCommon里面做任何其他的配置,除了我上面发布的那一行。

+0

你如何检索这个'MemberShipService'类的实例? '[Inject]'属性用于properties =>它对构造函数没有影响。 –

回答

3

你需要解决才能使用它使用依赖解析器的类的实例,使用创建MemberShipService的一个实例:

var memberShipService = 
    DependencyResolver.Current.GetService(typeof(MemberShipService)) as MemberShipService; 

将结合使用你的构造你的实例变量Repository那你指定。

+0

谢谢你完美的作品。 – Nick

+0

没问题,很高兴我可以帮忙 – mattytommo