【发布时间】:2012-05-27 09:52:21
【问题描述】:
我是温莎城堡的新手。在解决依赖关系时,它在 .NET MVC 应用程序中运行良好。目前我正在通过使用构造函数注入(Eg1)或属性注入(2)来解决控制器中的依赖关系。问题是当我尝试使用属性注入解决另一个类(不是控制器类)中的依赖项时,这不会自动解决(例如 3)
例如 1 - 解决好!
public class HomeController : Controller
{
private IUserRepo _userRepo;
public HomeController(IUserRepo userRepo)
{
_userRepo = userRepo;
}
public ActionResult Show()
{
return View(userRepo.GetAllUsers());
}
}
例如 2 - 解决好!
public class HomeController : Controller
{
public IUserRepo _userRepo {get;set;}
public HomeController()
{
}
public ActionResult Show()
{
return View(_userRepo.GetAllUsers());
}
}
例如 3 - 未解决!
public class ValidationRepository
{
public IUserRepo _userRepo {get;set;}
public bool ValidateUser()
{
//Here _userRepo is never resolved.
// NB: I want property injection instead of constructor injection, is there any way?
}
}
谢谢
【问题讨论】:
-
如果您是 Windsor 的新手,不妨试试 Unity Dependency Injection 或 Ninject。在我看来,它们更容易。微软推荐 Plus Unity。
-
有效点,但目前不是一个选项:/
-
我一直觉得 Unity 非常令人沮丧。仅就文档而言,Ninject 和 Castle Windsor 遥遥领先。
-
这些信息不足以为您提供任何明智的答案。您需要向我们展示您如何注册您的组件以及您的 ValidationRepo 是如何得到解决的。还可以查看 Windsor 的诊断信息,尤其是如果您有任何可能错误配置的组件docs.castleproject.org/Windsor.Debugger-views.ashx
-
我遇到了同样的问题,但我无法在任何地方找到答案。这是我的问题...stackoverflow.com/questions/19327306/… 谢谢
标签: c# .net asp.net-mvc dependency-injection castle-windsor