Элемент <TimeSpan_LegacyFormatMode><TimeSpan_LegacyFormatMode> Element

Определяет, сохраняет ли среда выполнения устаревшее поведение в операциях форматирования со System.TimeSpan значениями.Determines whether the runtime preserves legacy behavior in formatting operations with System.TimeSpan values.

<configuration>
  <runtime>
    <TimeSpan_LegacyFormatMode>

СинтаксисSyntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Атрибуты и элементыAttributes and Elements

В следующих разделах описаны атрибуты, дочерние и родительские элементы.The following sections describe attributes, child elements, and parent elements.

АтрибутыAttributes

АтрибутAttribute ОписаниеDescription
enabled Обязательный атрибут.Required attribute.

Указывает, использует ли среда выполнения устаревшее поведение форматирования со System.TimeSpan значениями.Specifies whether the runtime uses legacy formatting behavior with System.TimeSpan values.

Атрибут enabledenabled Attribute

ЗначениеValue ОписаниеDescription
false Среда выполнения не восстанавливает устаревшее поведение форматирования.The runtime does not restore legacy formatting behavior.
true Среда выполнения восстанавливает устаревшее поведение форматирования.The runtime restores legacy formatting behavior.

Дочерние элементыChild Elements

Отсутствует.None.

Родительские элементыParent Elements

ЭлементElement ОписаниеDescription
configuration Корневой элемент в любом файле конфигурации, используемом средой CLR и приложениями .NET Framework.The root element in every configuration file used by the common language runtime and .NET Framework applications.
runtime Содержит сведения о параметрах инициализации среды выполнения.Contains information about runtime initialization options.

ПримечанияRemarks

Начиная с .NET Framework 4 System.TimeSpan структура реализует IFormattable интерфейс и поддерживает операции форматирования со стандартными и пользовательскими строками формата.Starting with the .NET Framework 4, the System.TimeSpan structure implements the IFormattable interface and supports formatting operations with standard and custom format strings. Если метод синтаксического анализа обнаруживает неподдерживаемый описатель формата или строку формата, он создает исключение FormatException .If a parsing method encounters an unsupported format specifier or format string, it throws a FormatException.

В предыдущих версиях .NET Framework TimeSpan структура не реализовала IFormattable и не поддерживала строки формата.In previous versions of the .NET Framework, the TimeSpan structure did not implement IFormattable and did not support format strings. Однако многие разработчики ошибочно предполагали, что TimeSpan поддерживало набор строк формата и использовали их в операциях составного форматирования с помощью таких методов, как String.Format .However, many developers mistakenly assumed that TimeSpan did support a set of format strings and used them in composite formatting operations with methods such as String.Format. Обычно, если тип реализует IFormattable и поддерживает строки формата, вызовы методов форматирования с неподдерживаемыми строками формата обычно создают исключение FormatException .Ordinarily, if a type implements IFormattable and supports format strings, calls to formatting methods with unsupported format strings usually throw a FormatException. Однако, поскольку TimeSpan не реализуется IFormattable , среда выполнения игнорирует строку формата и вызывает TimeSpan.ToString() метод.However, because TimeSpan did not implement IFormattable, the runtime ignored the format string and instead called the TimeSpan.ToString() method. Это означает, что, хотя строки формата не оказывают влияния на операцию форматирования, их присутствие не привело к созданию FormatException .This means that, although the format strings had no effect on the formatting operation, their presence did not result in a FormatException.

Для случаев, когда устаревший код передает метод составного форматирования и недопустимую строку формата, и этот код нельзя перекомпилировать, можно использовать <TimeSpan_LegacyFormatMode> элемент для восстановления прежнего TimeSpan поведения.For cases in which legacy code passes a composite formatting method and an invalid format string, and that code cannot be recompiled, you can use the <TimeSpan_LegacyFormatMode> element to restore the legacy TimeSpan behavior. Если enabled атрибуту этого элемента присвоить значение true , метод составного форматирования приводит к вызову TimeSpan.ToString() , а не TimeSpan.ToString(String, IFormatProvider) , а FormatException исключение не создается.When you set the enabled attribute of this element to true, the composite formatting method results in a call to TimeSpan.ToString() rather than TimeSpan.ToString(String, IFormatProvider), and a FormatException is not thrown.

ПримерExample

Следующий пример создает экземпляр TimeSpan объекта и пытается отформатировать его с String.Format(String, Object) помощью метода, используя неподдерживаемую строку стандартного формата.The following example instantiates a TimeSpan object and attempts to format it with the String.Format(String, Object) method by using an unsupported standard format string.

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 или более ранней версии отображаются следующие выходные данные:When you run the example on the .NET Framework 3.5 or on an earlier version, it displays the following output:

12:30:45

При выполнении примера на .NET Framework 4 или более поздней версии это отличает его от выходных данных.This differs markedly from the output if you run the example on the .NET Framework 4 or later version:

Invalid Format

Однако, если добавить в каталог примера следующий файл конфигурации, а затем запустить пример на .NET Framework 4 или более поздней версии, то выходные данные идентичны тому, что был создан в примере, когда он выполняется в .NET Framework 3,5.However, if you add the following configuration file to the example's directory and then run the example on the .NET Framework 4 or later version, the output is identical to that produced by the example when it is run on .NET Framework 3.5.

<?xml version ="1.0"?>
<configuration>
   <runtime>
      <TimeSpan_LegacyFormatMode enabled="true"/>
   </runtime>
</configuration>

См. такжеSee also