Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#接口和宏常量选项_C#_Interface_Macros - Fatal编程技术网

C#接口和宏常量选项

C#接口和宏常量选项,c#,interface,macros,C#,Interface,Macros,我正在使用一个C#WCF项目创建一个RESTful服务,我对接口和宏常量替代方案有疑问 我有一堆WebGet装饰,看起来像这样(高度简化): 等等 在过去广泛使用C之后,我通常会为公共文本“{a}/{b}/{C}”创建一个宏常量,这样它就不会到处重复 通常的C#替代方案,如私有只读字符串或私有常量字符串在这种情况下不起作用,因为所讨论的字符串类型(它在装饰中),并且在任何情况下,接口都不能有成员 有没有办法使API中的未来更改(比如说{b}变成{b1}/{b2})不需要我在任何地方进行更改 到目

我正在使用一个C#WCF项目创建一个RESTful服务,我对接口和宏常量替代方案有疑问

我有一堆WebGet装饰,看起来像这样(高度简化):

等等

在过去广泛使用C之后,我通常会为公共文本
“{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
是可以的,因为整个值是在编译时计算的,并且在生成的程序集中,属性中只有组合字符串。

谢谢。我不知道这将在编译时计算。谢谢。不知道这将在编译时计算。