C # - Глобальная внутренняя константа? - PullRequest
1 голос
/ 29 июня 2011

Я пытаюсь сделать следующее:

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

Компилятор жалуется, хотя ... так, как правильно сделать это, где у меня есть BaseString в одном месте? Мой код завален атрибутами свойств внутри моей библиотеки, поэтому «глобальное» внутреннее const звучит как решение, поскольку я не могу использовать ресурсы.

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Вы не можете иметь выражения типа string.Format в атрибуте ... но должно работать следующее:

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

[FooAttribute(Value = MyReources.BaseString + " - Bar"))]
public int FooBar { get; set; }
0 голосов
/ 29 июня 2011

Если вы удалите String.Format и используете базовую конкатенацию строк, компилятор не будет жаловаться.Поскольку String.Format разрешается во время выполнения, а не во время компиляции, его нельзя использовать в атрибутах.Компилятор распознает, что myResources.BaseString и "Bar" являются постоянными значениями, поэтому это допустимо.

...