<> 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 true
hodnotu , 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>