gpt4 book ai didi

c# - 使用 CaSTLeWindsor 解决依赖关系

转载 作者:行者123 更新时间:2023-11-30 18:38:52 25 4
gpt4 key购买 nike

我是温莎城堡的新手。当涉及到依赖解析时,它在 .NET MVC 应用程序中工作得非常好。目前,我正在通过使用构造函数注入(inject) (Eg1) 或属性注入(inject) (2) 来解决 CONTROLLERS 中的依赖关系。问题是当我尝试使用属性注入(inject)解决另一个类(不是 Controller 类)中的依赖项时,这不会自动解决(例如 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?
}
}

谢谢

最佳答案

您没有显示足够的代码来明确说明为什么您的依赖关系没有得到解决。您没有展示类是如何实例化的,这对于理解如何/是否解决依赖关系非常重要。

也就是说,我可以在这里做出有根据的猜测:

您的 Controller 正在使用 Controller 工厂,它通过容器 (Windsor) 解析每个 Controller 。您的 ValidationRepository 是以容器未管理的其他方式创建的(例如 new ValidationRepository())。为了使依赖解析起作用,ValidationRepository 需要与您的 Controller 属于相同的依赖链——换句话说,它必须是其中一个 Controller 的依赖(或依赖的依赖,因此是依赖链)。

如果您确实手动实例化了 ValidationRepository(使用 new), Controller 不知道该类,因此无法解析它的依赖关系。尝试使 ValidationRepository 成为您的一个 Controller 的构造函数依赖项,看看是否可行。

关于c# - 使用 CaSTLeWindsor 解决依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10773054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com