Sdílet prostřednictvím


<> TimeSpan_LegacyFormatMode – element

Určuje, zda modul runtime zachovává starší chování v operacích formátování s System.TimeSpan hodnotami.

<Konfigurace>
  <Runtime>
    <TimeSpan_LegacyFormatMode>

Syntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Atributy a elementy

Následující části popisují atributy, podřízené prvky a nadřazené prvky.

Atributy

Atribut Popis
enabled Požadovaný atribut.

Určuje, jestli modul runtime používá starší formátování chování s System.TimeSpan hodnotami.

Atribut enabled

Hodnota Popis
false Modul runtime neobnoví chování staršího formátování.
true Modul runtime obnoví chování staršího formátování.

Podřízené elementy

Žádné

Nadřazené elementy

Element Popis
configuration Kořenový prvek v každém konfiguračním souboru, který je používán modulem Common Language Runtime (CLR) a aplikacemi rozhraní .NET Framework.
runtime Obsahuje informace o možnostech inicializace modulu runtime.

Poznámky

Počínaje rozhraním .NET Framework 4 System.TimeSpan implementuje IFormattable struktura rozhraní a podporuje operace formátování pomocí standardních a vlastních formátovacích řetězců. Pokud metoda parsování narazí na nepodporovaný specifikátor formátu nebo řetězec formátu, vyvolá FormatException.

V předchozích verzích rozhraní .NET Framework TimeSpan se struktura neimplementovala IFormattable a nepodpořila formátovací řetězce. Mnoho vývojářů však omylem předpokládalo, že TimeSpan podporuje sadu formátových řetězců a používá je ve složených operacích formátování pomocí metod, jako String.Formatje . Obvykle platí, že pokud typ implementuje IFormattable a podporuje formátovací řetězce, volání metod formátování s nepodporovanými formátovacími řetězci obvykle vyvolá FormatException. Protože však TimeSpan neimplementoval IFormattable, modul runtime ignoroval formátovací řetězec a místo toho volal metodu TimeSpan.ToString() . To znamená, že i když formátovací řetězce neměly žádný vliv na operaci formátování, jejich přítomnost neměla za následek FormatException.

V případech, kdy starší verze kódu předá složenou metodu formátování a neplatný formátovací řetězec a tento kód nelze znovu zkompilovat, můžete použít <TimeSpan_LegacyFormatMode> element k obnovení staršího TimeSpan chování. Když nastavíte enabled atribut tohoto prvku na truehodnotu , výsledkem metody složeného formátování je volání TimeSpan.ToString() místo TimeSpan.ToString(String, IFormatProvider), a FormatException není vyvolán.

Příklad

Následující příklad vytvoří instanci objektu TimeSpan a pokusí se jej naformátovat pomocí String.Format(String, Object) metody pomocí nepodporovaného řetězce standardního formátu.

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

Při spuštění příkladu v rozhraní .NET Framework 3.5 nebo ve starší verzi se zobrazí následující výstup:

12:30:45

To se výrazně liší od výstupu, pokud spustíte příklad v rozhraní .NET Framework 4 nebo novější verzi:

Invalid Format

Pokud však do adresáře příkladu přidáte následující konfigurační soubor a pak spustíte příklad v rozhraní .NET Framework 4 nebo novější verzi, výstup je stejný jako výstup vytvořený v příkladu při spuštění v rozhraní .NET Framework 3.5.

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

Viz také