C# - 全局内部const?

时间:2011-06-29 18:13:54

标签: c# attributes const global

我正在尝试执行以下操作:

[FooAttribute(Value = String.Format("{0} - {1}", myReources.BaseString, "Bar"))]
public int FooBar { get; set; }

虽然编译器抱怨...所以在我将BaseString放在一个位置的情况下,这样做的正确方法是什么?我的代码中充斥着我的库中属性的属性,因此“全局”内部const声音就像解决方案一样,因为我无法使用资源。

2 个答案:

答案 0 :(得分:2)

你不能在属性中使用像string.Format这样的表达式......但是以下内容应该有效:

public class MyResources
{
    public const string BaseString = "there";
}

[FooAttribute(Value = MyReources.BaseString + " - Bar"))]
public int FooBar { get; set; }

答案 1 :(得分:0)

如果删除String.Format并使用基本字符串连接,编译器将不会抱怨。由于String.Format在运行时解析而不是编译时,因此不能在属性中使用它。编译器将识别myResources.BaseString和“Bar”都是常量值,因此这样做是合法的。

[FooAttribute(Value = myReources.BaseString + "Bar")]