Jas*_*rff 1 asp.net-mvc ninject nuget
我刚刚将我的MVC2项目升级到MVC3并使用NuGet库包引用来安装ninject.这创建了一个appstart类,我使用以下代码注入我的IMembershipService类.
public static void RegisterServices(IKernel kernel) {
kernel.Bind<IMembershipService>().To<AccountMembershipService>();
}
Run Code Online (Sandbox Code Playgroud)
例如,这适用于我的HomeController.
public class HomeController : Controller
{
public IMembershipService MembershipService { get; set; }
public HomeController() : this(null) { }
public HomeController(IMembershipService service)
{
MembershipService = service;
}
Run Code Online (Sandbox Code Playgroud)
但是,我正在使用BaseController.基类中几乎相同的代码不再有效.
public class BaseController : Controller
{
public IMembershipService MembershipService { get; set; }
public UserService UserService { get; set; }
public BaseController() : this(null, null) { }
public BaseController(IMembershipService service, UserService userService)
{
MembershipService = service;
UserService = userService ?? new UserService();
}
Run Code Online (Sandbox Code Playgroud)
如果我打破了基本控制器的构造函数,那么service就是NULL.我从来没有将Ninject用于IOC所以也许答案是显而易见的,但为什么它不会像我想要的那样在基类中注入我的AccountMembershipController?我没有看到有什么不同,虽然我意识到额外的继承水平可能会以某种方式搞乱Ninject.
你的HomeController来自Controller,而不是BaseController?此外,您有一个BaseController的默认构造函数,它将事物设置为null.为什么你有这个呢?我首先要摆脱那些默认的构造函数.您不应该需要任何默认构造函数.
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |