<Elemento de > TimeSpan_LegacyFormatMode<TimeSpan_LegacyFormatMode> Element

Determina se o tempo de execução preserva o comportamento herdado nas operações System.TimeSpan de formatação com valores.Determines whether the runtime preserves legacy behavior in formatting operations with System.TimeSpan values.

<configuration> <configuration>
   <> de tempo de execução  <runtime>
     <> TimeSpan_LegacyFormatMode    <TimeSpan_LegacyFormatMode>

SintaxeSyntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Atributos e elementosAttributes and Elements

As seções a seguir descrevem atributos, elementos filho e elementos pai.The following sections describe attributes, child elements, and parent elements.

AtributosAttributes

AtributoAttribute DescriçãoDescription
enabled Atributo obrigatório.Required attribute.

Especifica se o tempo de execução usa comportamento de System.TimeSpan formatação herdado com valores.Specifies whether the runtime uses legacy formatting behavior with System.TimeSpan values.

Atributo habilitadoenabled Attribute

ValorValue DescriçãoDescription
false O tempo de execução não restaura o comportamento de formatação herdado.The runtime does not restore legacy formatting behavior.
true O tempo de execução restaura o comportamento de formatação herdado.The runtime restores legacy formatting behavior.

Elementos filhoChild Elements

nenhuma.None.

Elementos paiParent Elements

ElementoElement DescriçãoDescription
configuration O elemento raiz em cada arquivo de configuração usado pelos aplicativos do Common Language Runtime e .NET Framework.The root element in every configuration file used by the common language runtime and .NET Framework applications.
runtime Contém informações sobre opções de inicialização do tempo de execução.Contains information about runtime initialization options.

ComentáriosRemarks

Começando com o .NET Framework 4, a System.TimeSpan estrutura implementa a IFormattable interface e dá suporte a operações de formatação com cadeias de caracteres de formato padrão e personalizadas.Starting with the .NET Framework 4, the System.TimeSpan structure implements the IFormattable interface and supports formatting operations with standard and custom format strings. Se um método de análise encontrar um especificador de formato sem suporte ou uma cadeia de caracteres de FormatExceptionformato, ele lançará um.If a parsing method encounters an unsupported format specifier or format string, it throws a FormatException.

Nas versões anteriores do .NET Framework, a estrutura TimeSpan não implementou IFormattable e não oferecia suporte a cadeias de caracteres de formato.In previous versions of the .NET Framework, the TimeSpan structure did not implement IFormattable and did not support format strings. No entanto, muitos desenvolvedores assumiram erroneamente TimeSpan que davam suporte a um conjunto de cadeias de caracteres de formato e os usaram em String.Format operações de formatação composta com métodos como.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. Normalmente, se um tipo implementa IFormattable e dá suporte a cadeias de caracteres de formato, as chamadas para métodos de formatação com FormatExceptioncadeias de caracteres de formato sem suporte geralmente lançam um.Ordinarily, if a type implements IFormattable and supports format strings, calls to formatting methods with unsupported format strings usually throw a FormatException. No entanto TimeSpan , como o IFormattablenão foi implementado, o Runtime ignorou a cadeia de TimeSpan.ToString() caracteres de formato e, em vez disso, chamou o método.However, because TimeSpan did not implement IFormattable, the runtime ignored the format string and instead called the TimeSpan.ToString() method. Isso significa que, embora as cadeias de caracteres de formato não tenham efeito sobre a operação de formatação, sua presença FormatExceptionnão resultou em um.This means that, although the format strings had no effect on the formatting operation, their presence did not result in a FormatException.

Para casos em que o código herdado passa um método de formatação composto e uma cadeia de caracteres de formato inválida, e esse código não pode ser <TimeSpan_LegacyFormatMode> recompilado, você pode TimeSpan usar o elemento para restaurar o comportamento herdado.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. Quando você define o enabled atributo desse elemento como true, o método de formatação composta resulta em uma chamada para TimeSpan.ToString() em vez TimeSpan.ToString(String, IFormatProvider)de e um FormatException não é gerado.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.

ExemploExample

O exemplo a seguir instancia um TimeSpan objeto e tenta formatá-lo com String.Format(String, Object) o método usando uma cadeia de caracteres de formato padrão sem suporte.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

Quando você executa o exemplo no .NET Framework 3,5 ou em uma versão anterior, ele exibe a seguinte saída:When you run the example on the .NET Framework 3.5 or on an earlier version, it displays the following output:

12:30:45

Isso difere de acordo com a saída se você executar o exemplo na versão .NET Framework 4 ou posterior:This differs markedly from the output if you run the example on the .NET Framework 4 or later version:

Invalid Format

No entanto, se você adicionar o seguinte arquivo de configuração ao diretório do exemplo e, em seguida, executar o exemplo na versão .NET Framework 4 ou posterior, a saída será idêntica à produzida pelo exemplo quando for executada em .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>

Consulte tambémSee also