Partilhar via


<> Elemento TimeSpan_LegacyFormatMode

Determina se o runtime preserva o comportamento legado nas operações de formatação com System.TimeSpan valores.

<configuração>
  <runtime>
    <TimeSpan_LegacyFormatMode>

Syntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Atributos e Elementos

As secções seguintes descrevem atributos, elementos subordinados e elementos principais.

Atributos

Atributo Descrição
enabled Atributo obrigatório.

Especifica se o runtime utiliza o comportamento de formatação legado com System.TimeSpan valores.

Atributo ativado

Valor Descrição
false O runtime não restaura o comportamento de formatação legado.
true O runtime restaura o comportamento de formatação legado.

Elementos Subordinados

Nenhum.

Elementos Principais

Elemento Descrição
configuration O elemento raiz em todos os ficheiros de configuração utilizados pelo runtime de idioma comum e .NET Framework aplicações.
runtime Contém informações sobre as opções de inicialização do runtime.

Observações

A partir do .NET Framework 4, a System.TimeSpan estrutura implementa a IFormattable interface e suporta operações de formatação com cadeias de formato padrão e personalizadas. Se um método de análise encontrar um especificador de formato não suportado ou uma cadeia de formato, lança um FormatException.

Nas versões anteriores do .NET Framework, a TimeSpan estrutura não foi implementada IFormattable e não suportava cadeias de formato. No entanto, muitos programadores assumiram erradamente que TimeSpan suportavam um conjunto de cadeias de formato e as utilizavam em operações de formatação composta com métodos como String.Format. Normalmente, se um tipo implementar IFormattable e suportar cadeias de formato, as chamadas para métodos de formatação com cadeias de formato não suportadas normalmente geram um FormatException. No entanto, como TimeSpan não implementou IFormattableo , o runtime ignorou a cadeia de formato e, em vez disso, chamou o TimeSpan.ToString() método. Isto significa que, embora as cadeias de formato não tivessem qualquer efeito na operação de formatação, a sua presença não resultou num FormatException.

Nos casos em que o código legado transmite um método de formatação composto e uma cadeia de formato inválida e esse código não pode ser recompilado, pode utilizar o <TimeSpan_LegacyFormatMode> elemento para restaurar o comportamento legado TimeSpan . Quando define o enabled atributo deste elemento como true, o método de formatação composta resulta numa chamada em TimeSpan.ToString() vez TimeSpan.ToString(String, IFormatProvider)de , e um FormatException não é emitido.

Exemplo

O exemplo seguinte instancia um TimeSpan objeto e tenta formatá-lo com o String.Format(String, Object) método através de uma cadeia de formato padrão não suportada.

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 executa o exemplo no .NET Framework 3.5 ou numa versão anterior, este apresenta o seguinte resultado:

12:30:45

Isto difere significativamente do resultado se executar o exemplo na versão .NET Framework 4 ou posterior:

Invalid Format

No entanto, se adicionar o seguinte ficheiro de configuração ao diretório do exemplo e, em seguida, executar o exemplo na versão .NET Framework 4 ou posterior, o resultado é idêntico ao produzido pelo exemplo quando é executado no .NET Framework 3.5.

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

Ver também