<> TimeSpan_LegacyFormatMode, element
Określa, czy środowisko uruchomieniowe zachowuje starsze zachowanie w operacjach formatowania z wartościami System.TimeSpan .
<Konfiguracji>
<Środowiska wykonawczego>
<TimeSpan_LegacyFormatMode>
Składnia
<TimeSpan_LegacyFormatMode
enabled="true|false"/>
Atrybuty i elementy
W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.
Atrybuty
Atrybut | Opis |
---|---|
enabled |
Atrybut wymagany. Określa, czy środowisko uruchomieniowe używa starszego zachowania formatowania z wartościami System.TimeSpan . |
Atrybut włączony
Wartość | Opis |
---|---|
false |
Środowisko uruchomieniowe nie przywraca starszego zachowania formatowania. |
true |
Środowisko uruchomieniowe przywraca starsze zachowanie formatowania. |
Elementy podrzędne
Brak.
Elementy nadrzędne
Element | Opis |
---|---|
configuration |
Element główny w każdym pliku konfiguracji używanym przez środowisko uruchomieniowe języka wspólnego i aplikacje programu .NET Framework. |
runtime |
Zawiera informacje dotyczące opcji inicjowania środowiska uruchomieniowego. |
Uwagi
Począwszy od .NET Framework 4, System.TimeSpan struktura implementuje IFormattable interfejs i obsługuje operacje formatowania ze standardowymi i niestandardowymi ciągami formatu. Jeśli metoda analizowania napotka nieobsługiwany specyfikator formatu lub ciąg formatu, zgłasza wartość FormatException.
W poprzednich wersjach .NET Framework TimeSpan struktura nie zaimplementowała IFormattable i nie obsługiwała ciągów formatu. Jednak wielu deweloperów błędnie zakładało, że TimeSpan obsługuje zestaw ciągów formatu i używał ich w operacjach formatowania złożonego z metodami takimi jak String.Format. Zwykle, jeśli typ implementuje IFormattable ciągi formatu i obsługuje je, wywołuje metody formatowania z nieobsługiwanymi ciągami formatu zwykle zgłaszają wartość FormatException. Jednak ponieważ TimeSpan nie zaimplementowano IFormattable, środowisko uruchomieniowe zignorowało ciąg formatu i zamiast tego nazwało metodę TimeSpan.ToString() . Oznacza to, że chociaż ciągi formatu nie miały wpływu na operację FormatExceptionformatowania, ich obecność nie powodowała wystąpienia elementu .
W przypadku przypadków, w których starszy kod przekazuje metodę formatowania złożonego i nieprawidłowy ciąg formatu, a kod nie może być ponownie skompilowany, można użyć <TimeSpan_LegacyFormatMode>
elementu w celu przywrócenia starszego TimeSpan zachowania. Po ustawieniu atrybutu enabled
tego elementu na true
wartość metoda formatowania złożonego powoduje wywołanie metody TimeSpan.ToString() zamiast TimeSpan.ToString(String, IFormatProvider), a element FormatException nie jest zgłaszany.
Przykład
Poniższy przykład tworzy wystąpienie TimeSpan obiektu i próbuje sformatować go String.Format(String, Object) za pomocą metody przy użyciu nieobsługiwanego standardowego ciągu formatu.
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
Po uruchomieniu przykładu w wersji .NET Framework 3.5 lub starszej wersji zostaną wyświetlone następujące dane wyjściowe:
12:30:45
Różni się to wyraźnie od danych wyjściowych, jeśli uruchomisz przykład w wersji .NET Framework 4 lub nowszej:
Invalid Format
Jeśli jednak dodasz następujący plik konfiguracji do katalogu przykładu, a następnie uruchom przykład w wersji .NET Framework 4 lub nowszej, dane wyjściowe są identyczne z danymi wygenerowaną przez przykład podczas uruchamiania w .NET Framework 3.5.
<?xml version ="1.0"?>
<configuration>
<runtime>
<TimeSpan_LegacyFormatMode enabled="true"/>
</runtime>
</configuration>