温莎根据调用控制器解决依赖关系

发布于 2024-11-17 05:14:12 字数 566 浏览 0 评论 0原文

假设我有一个(蹩脚的伪代码):

interface IUserService
{
  .... 
  User CreateUser(bunch of parameters)
  ....
}

通过一个实现将其注入到一堆不同的控制器中。

具体的 UserService 注入了一个

interface IHRService
{
  bool ValidateInfo(user _user)
}

这是用于附加/可选验证并且至少有 2 个实现。 ValidateInfo 是从 UserService 的 CreateUser 函数调用的。我想根据调用 UserService 的控制器将不同的 IHRService 注入到 UserService 中 - 这样我就可以从多个不同的屏幕调用相同的 CreateUser 函数,并且能够跳过一个屏幕中的附加验证,但不能跳过另一个屏幕中的附加验证。

温莎有可能发生这样的事情吗?或者我的处理方式是错误的?我是否应该在特定控制器内获取正确的 IHRService 然后将其传递给 CreateUser 函数?

Let's say I have a (crappy pseudo code):

interface IUserService
{
  .... 
  User CreateUser(bunch of parameters)
  ....
}

With one implementation that get's injected into a bunch of different controllers.

The concrete UserService is injected with a

interface IHRService
{
  bool ValidateInfo(user _user)
}

This is for additional/optional validation and has at least 2 implementations. ValidateInfo is called from UserService's CreateUser function. I want to inject different IHRService into UserService based on what controller is calling the UserService - this is so I can call the same CreateUser function from multiple different screens and be able to skip the additional validation in one but not the other.

Is something like this possible with windsor or am I going about this the wrong way? Should I get the correct IHRService inside of the particular controller then pass that into the CreateUser function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍暮颜 2024-11-24 05:14:12

我不知道我是否理解你,但似乎你可以注入 UserService 和 抽象工厂 根据运行时的某些选项创建 IHRService 的具体实现。对于这种情况,温莎可以很好地处理抽象工厂。有道理吗?

I don't know if I understood you well but it seems that you could inject into UserService and abstract factory that creates a concret implementation of IHRService depending on some options at runtime. Windsor deals with abstract factories very well for that scenarions. Does it make sense ?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文