строка формата - проверка времени компиляции - PullRequest
2 голосов
/ 08 января 2010

Есть ли способ проверить строку формата во время компиляции?

Пример:

Console.WriteLine("{0} is a really {1} site", "stackoverflow.com", "cool");//this will run

// это даст исключение, поскольку предоставляется только один аргумент

Console.WriteLine("{0} is a really {1} site", "stackoverflow.com");

Exception:"Index (zero based) must be greater than or equal to zero and less than the size of the argument list."

и если строка формата имеет неправильный формат (т. Е. Здесь пропущен "}" после 1)

Console.WriteLine("{0} is a really {1 site", "stackoverflow.com","cool");

Exception: Input string was not in a correct format.

Ответы [ 3 ]

4 голосов
/ 08 января 2010

Нет, вы не можете добавить проверку во время компиляции здесь. Это один из недостатков строк ресурсов и строк форматирования. Вы можете сделать несколько вещей, чтобы смягчить вашу проблему.

  1. Тщательно проведите модульное тестирование общедоступных интерфейсов, чтобы убедиться в правильности форматирования строк.
  2. Используйте такие инструменты, как ReSharper , которые могут выполнять статический анализ и сообщать об этих проблемах до запуска приложения.
  3. Вещи лучше трое.
2 голосов
/ 08 января 2010

Хотя проверка на самом деле не выполняется во время компиляции, ReSharper может предупредить вас в Visual Studio, когда число аргументов неверно или строка формата имеет неправильный формат.

2 голосов
/ 08 января 2010

Нет, нет способа сделать это. Модульное тестирование решает эту проблему.

...