我正在使用 C# WCF 项目创建 RESTful 服务,并且对接口和宏常量替代方案有疑问。
我有一堆看起来像这样的 WebGet 装饰(高度简化):
public interface IRestSerivce
{
[OperationContract]
[WebGet( UriTemplate = "{a}/{b}/{c}/someName01?param={val}" )]
string Handler01( .. );
[OperationContract]
[WebGet( UriTemplate = "{a}/{b}/{c}/someName02?param={val}" )]
string Handler02( .. );
[OperationContract]
[WebGet( UriTemplate = "{a}/{b}/{c}/someName03?param={val}" )]
string Handler03( .. );
}
等等。
在过去广泛使用 C 时,我通常会为公共文本创建一个宏常量,"{a}/{b}/{c}"
这样它就不会在任何地方重复。
由于所讨论的字符串类型(它在装饰中),通常的 C# 替代方案(例如private readonly string
或private const string
不会在这种情况下工作),并且在任何情况下,接口都不能有成员。
有什么方法可以使 API 的未来更改(比如{b}
变成{b1}/{b2}
)不需要我在任何地方进行更改?
到目前为止,我发现的解决方案看起来像这里提到的:http: //social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/71e8d202-b249-49bb-a85d-b0ef8207463d/但我不知道'认为这不适用于这里,因为我认为在接口的实现中修改装饰字符串为时已晚。