<> 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>