我即将开始一个使用 Windsor 的新项目,但我一直想知道是否会遇到 A 类可能需要实例化 B 类的场景,但 Windsor 将 B 类的实例注入到其中是不可行或不可能的它。我正在努力想一个场景,但这里有:
假设我有一个传递给 WCF 服务的业务实体“客户”。此类具有 Ent.Lib 自我验证方法,该方法又使用帮助器类“CustomerValidator”。服务接收到的 Customer 对象已经被 WCF 反序列化,所以 Windsor 不参与它的实例化,所以我不能注入任何依赖项。我也不能将我的 CustomerValidator 传递给自我验证方法,因为它必须遵循 Ent.Lib 的特定签名。那么如何在此类/方法中实例化 CustomerValidator 呢?我仍然想利用 Windsor 而不是简单地做一个“ var cv = new CustomerValidator(); ”。
这不是一个很好的示例,因为它可以通过不同的方式解决,例如将 Customer 对象传递给验证方法,而不是在 Customer 类中使用验证方法,但它提供了一个可能的讨论场景。
我可以将我的 WindsorContainer 公开为一个公共单例,任何需要它的代码都可以访问它,但这似乎是不受欢迎的。还有其他建议吗?