我正在创建一个 Web API,我希望能够对其进行版本控制。我想做的方式是这样的:
- 客户端应用程序在自定义 HTTP 标头中传递包含它们正在调用的 API 版本的每个请求。
- 存在一个组件(称为
IVersionRetriever
或其他)以从请求中提取版本号。Castle Windsor 负责提供IVersionRetriever
. - 在我希望服务接口的实现在版本之间有所不同的地方,Castle Windsor 被配置为
IVersionRetriever.ApiVersion
根据获得的值检查并返回一个实现。
所有这一切似乎都很简单,但我无法从 Windsor 的注册 API 中计算出我会如何对 Windsor 说“对IFoo
,如果IVersionRetriever.ApiVersion
是 1,那么我想要一个SuperFoo
,但如果版本是 2,那么我想要一个SuperDuperFoo
.
我将如何配置它?
如果相关,所有组件都有 PerWebRequest 生活方式。