Я хочу использовать поле «статическое чтение только» из класса «Настройки», здесь весь мой код, например сообщения об ошибках и константы, содержится в атрибуте [StringLength] для ViewModel. Однако StringLength не принимает аргументы атрибута, которые не являются константным выражением, выражением typeof или выражениями массива. Однако поле, которое я использую, не может быть изменено на постоянное выражение, потому что оно использует другие постоянные поля и, таким образом, выдает ошибку.
Я знаю, что есть способ обойти это, используя строку и константное выражение
Причина, по которой я этого хочу, заключается в том, что в будущем все будет очень легко изменить, если я буду менять какой-то жестко закодированный код. Код в жестком коде используется в нескольких местах, таких как классы моделей и модели представлений, поскольку к ним предъявляются одинаковые требования.
Я пытался использовать свойство get для этого поля, которое является константой, но, похоже, тоже не работает. Я погуглил и посмотрел здесь на stackoverflow, но не могу найти никого с такой же проблемой.
Я также попытался использовать string.Format () в качестве аргумента, хотя это НЕ решение, которое я хочу, потому что тогда мне все еще нужно изменить это сообщение в нескольких местах.
Произошла ошибка для Settings.LastNameLength в строке StringLength.
public class DeelnemerViewModels
{
...
[Display (Name = "Lastname", Prompt = "Doe")]
[Required (ErrorMessage = Settings.fieldNeeded)]
[StringLength (Settings.maxAmountOfCharactersLastName, MinimumLength = Settings.minAmountOfCharactersLastname, ErrorMessage = Settings.LastNameLength)]
public string Lastname { get; set; }
...
}
public static class Settings
{
...
public const int minAmountOfCharactersLastname = 2;
public const int maxAmountOfCharactersLastName = 50;
public static readonly string LastNameLength =
"The lastname does not fit the requirements. The lastname must atleast be "
+ minAmountOfCharactersLastname + " characters long and at max "
+ maxAmountOfCharactersLastName + " characters long.";
...
}