我从客户端进行 WCF REST api 调用。为此,我使用了一个类型的专用对象WebChannelFactory<IRestApi>
,其中IRestApi
是一个 ServiceContract。
然后,我可以通过我使用的通道(由创建)调用 IRestApi 的方法CreateChannel()
。
我的问题是:我可以向这个通道添加常量参数(在我的情况下是版本号),这样我就不必在每个调用中一遍又一遍地传递它?
我从客户端进行 WCF REST api 调用。为此,我使用了一个类型的专用对象WebChannelFactory<IRestApi>
,其中IRestApi
是一个 ServiceContract。
然后,我可以通过我使用的通道(由创建)调用 IRestApi 的方法CreateChannel()
。
我的问题是:我可以向这个通道添加常量参数(在我的情况下是版本号),这样我就不必在每个调用中一遍又一遍地传递它?
我不确定您的对象/接口是如何组合在一起的,您也不清楚您希望如何将此版本发送到服务器。REST API 版本的常规方法是将版本放入 URI,有点像example.com/service/v8/...
.
在这种情况下,也许您可以使用可以包装它的装饰器对象WebChannel
(我假设这是您会调用类似.get("/some/url")
on 的类型)。您的装饰器将能够“注入”额外的数据。
你调用decoratedObject.setURLPreFix("/some_serivce/v3")
,然后decoratedObject.get("/some/url")
,装饰器函数将被实现为......
class WebChannelDecorator{
WebChannel channel;
String urlPrefix = "";
WebChannelDecorator(WebChannel c){
channel = c;
}
/* methods you want to work just the same */
T foo(args){
return channel.foo(args);
}
/* methods you want to 'decorate' */
T get(String url){
return channel.get(urlPrefix + url);
}
void setURLPrefix(String prefix){
urlPrefix = prefix;
}
}
这实际上可能不被称为装饰器模式,但重要的是想法,而不是你所说的。