Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определяет, сохраняет ли среда выполнения устаревшее поведение при операциях форматирования со System.TimeSpan значениями.
<configuration>
<runtime>
<TimeSpan_LegacyFormatMode>
Синтаксис
<TimeSpan_LegacyFormatMode
enabled="true|false"/>
Атрибуты и элементы
В следующих разделах описываются атрибуты, дочерние и родительские элементы.
Атрибуты
| Атрибут | Описание |
|---|---|
enabled |
Обязательный атрибут. Указывает, использует ли среда выполнения устаревшее поведение форматирования со System.TimeSpan значениями. |
включенный атрибут
| Ценность | Описание |
|---|---|
false |
Среда выполнения не восстанавливает устаревшее поведение форматирования. |
true |
Среда выполнения восстанавливает устаревшее поведение форматирования. |
Дочерние элементы
Нет.
Родительские элементы
| Элемент | Описание |
|---|---|
configuration |
Корневой элемент в каждом файле конфигурации, используемом средой CLR и приложениями .NET Framework. |
runtime |
Содержит сведения о параметрах инициализации среды выполнения. |
Замечания
Начиная с .NET Framework 4, System.TimeSpan структура реализует IFormattable интерфейс и поддерживает операции форматирования со стандартными и пользовательскими строками формата. Если метод синтаксического анализа обнаруживает неподдерживаемый спецификатор формата или строку FormatExceptionформата, он выдает .
В предыдущих версиях .NET Framework TimeSpan структура не реализовывала IFormattable и не поддерживала строки форматирования. Однако многие разработчики ошибочно предположили, что они поддерживают набор строк форматирования, TimeSpan и использовали их в составных операциях форматирования с помощью таких методов, как String.Format. Обычно, если тип реализует IFormattable и поддерживает строки форматирования, вызовы методов форматирования с неподдерживаемыми строками формата обычно выдают FormatException. Однако, поскольку TimeSpan не реализовано IFormattable, среда выполнения проигнорировала строку формата и вместо этого вызвала метод.TimeSpan.ToString() Это означает, что, хотя строки форматирования не повлияли на операцию форматирования, их присутствие не привело к появлению .FormatException
В случаях, когда устаревший код передает составной метод форматирования и недопустимую строку форматирования, и этот код не может быть перекомпилирован, можно использовать элемент <TimeSpan_LegacyFormatMode> для восстановления устаревшего TimeSpan поведения. Если для атрибута enabled этого элемента задано значение true, метод составного форматирования приводит к вызову вместо TimeSpan.ToString()TimeSpan.ToString(String, IFormatProvider), и a FormatException не генерируется.
Пример
В следующем примере создается экземпляр объекта и предпринимается TimeSpan попытка отформатировать его с помощью метода, String.Format(String, Object) используя неподдерживаемую строку стандартного формата.
using System;
public class Example
{
public static void Main()
{
TimeSpan interval = new TimeSpan(12, 30, 45);
string output;
try {
output = String.Format("{0:r}", interval);
}
catch (FormatException) {
output = "Invalid Format";
}
Console.WriteLine(output);
}
}
Module Example
Public Sub Main()
Dim interval As New TimeSpan(12, 30, 45)
Dim output As String
Try
output = String.Format("{0:r}", interval)
Catch e As FormatException
output = "Invalid Format"
End Try
Console.WriteLine(output)
End Sub
End Module
При запуске примера в .NET Framework 3.5 или в более ранней версии отображаются следующие выходные данные:
12:30:45
Это заметно отличается от вывода, если вы запустите пример на .NET Framework 4 или более поздней версии:
Invalid Format
Однако если добавить следующий файл конфигурации в каталог примера, а затем запустить пример на .NET Framework 4 или более поздней версии, выходные данные будут идентичны результатам, полученным в примере при запуске в .NET Framework 3.5.
<?xml version ="1.0"?>
<configuration>
<runtime>
<TimeSpan_LegacyFormatMode enabled="true"/>
</runtime>
</configuration>
См. также
- Настройка приложений с помощью файлов конфигурации
- схема параметров среды выполнения
- Схема файла конфигурации