C#接口和宏常量选项
我正在使用一个C#WCF项目创建一个RESTful服务,我对接口和宏常量替代方案有疑问 我有一堆WebGet装饰,看起来像这样(高度简化): 等等 在过去广泛使用C之后,我通常会为公共文本C#接口和宏常量选项,c#,interface,macros,C#,Interface,Macros,我正在使用一个C#WCF项目创建一个RESTful服务,我对接口和宏常量替代方案有疑问 我有一堆WebGet装饰,看起来像这样(高度简化): 等等 在过去广泛使用C之后,我通常会为公共文本“{a}/{b}/{C}”创建一个宏常量,这样它就不会到处重复 通常的C#替代方案,如私有只读字符串或私有常量字符串在这种情况下不起作用,因为所讨论的字符串类型(它在装饰中),并且在任何情况下,接口都不能有成员 有没有办法使API中的未来更改(比如说{b}变成{b1}/{b2})不需要我在任何地方进行更改 到目
“{a}/{b}/{C}”
创建一个宏常量,这样它就不会到处重复
通常的C#替代方案,如私有只读字符串
或私有常量字符串
在这种情况下不起作用,因为所讨论的字符串类型(它在装饰中),并且在任何情况下,接口都不能有成员
有没有办法使API中的未来更改(比如说{b}
变成{b1}/{b2}
)不需要我在任何地方进行更改
到目前为止,我发现的解决方案与这里提到的类似:但我认为这不适用于这里,因为我认为在接口实现中修改装饰字符串为时已晚。
const string
应该可以。您不能将它放在接口中,但可以引用其他类中的常量
static class Prefixes
{
public const string Basic = "{a}/{b}/{c}";
}
public interface IRestSerivce
{
[OperationContract]
[WebGet( UriTemplate = Prefixes.Basic + "/someName01?param={val}" )]
string Handler01( .. );
}
使用
const string
是可以的,因为整个值是在编译时计算的,并且在结果程序集中,属性中只有组合字符串。const string
应该可以。您不能将它放在接口中,但可以引用其他类中的常量
static class Prefixes
{
public const string Basic = "{a}/{b}/{c}";
}
public interface IRestSerivce
{
[OperationContract]
[WebGet( UriTemplate = Prefixes.Basic + "/someName01?param={val}" )]
string Handler01( .. );
}
使用
const string
是可以的,因为整个值是在编译时计算的,并且在生成的程序集中,属性中只有组合字符串。谢谢。我不知道这将在编译时计算。谢谢。不知道这将在编译时计算。