Freigeben über


< > TimeSpan_LegacyFormatMode-Element

Bestimmt, ob die Runtime das Legacyverhalten bei Formatierungsvorgängen mit System.TimeSpan Werten beibehält.

<Konfiguration>
   <Laufzeit>
     <TimeSpan_LegacyFormatMode>

Syntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Attribute und Elemente

In den folgenden Abschnitten werden Attribute, untergeordnete Elemente und übergeordnete Elemente beschrieben.

Attribute

Merkmal BESCHREIBUNG
enabled Erforderliches Attribut.

Gibt an, ob die Runtime das Legacyformatierungsverhalten mit System.TimeSpan Werten verwendet.

aktiviertes Attribut

Wert BESCHREIBUNG
false Die Runtime stellt das Legacy-Formatierungsverhalten nicht wieder her.
true Die Runtime stellt das Legacy-Formatierungsverhalten wieder her.

Untergeordnete Elemente

Keiner.

Übergeordnete Elemente

Element BESCHREIBUNG
configuration Das Stammelement in jeder Konfigurationsdatei, die von der Common Language Runtime und .NET Framework-Anwendungen verwendet wird.
runtime Enthält Informationen zu den Optionen für die Laufzeitinitialisierung.

Bemerkungen

Ab .NET Framework 4 implementiert die System.TimeSpan Struktur die IFormattable Schnittstelle und unterstützt Formatierungsvorgänge mit standardmäßigen und benutzerdefinierten Formatzeichenfolgen. Wenn eine Analysemethode auf einen nicht unterstützten Formatbezeichner oder eine nicht unterstützte Formatzeichenfolge trifft, löst sie eine .FormatException

In früheren Versionen von .NET Framework wurden Formatzeichenfolgen von der TimeSpan Struktur nicht implementiert IFormattable und nicht unterstützt. Viele Entwickler gingen jedoch fälschlicherweise davon aus, dass dies eine Reihe von Formatzeichenfolgen unterstützt, TimeSpan und verwendeten sie in zusammengesetzten Formatierungsvorgängen mit Methoden wie String.Format. Wenn ein Typ Formatzeichenfolgen implementiert IFormattable und unterstützt, lösen Aufrufe von Formatierungsmethoden mit nicht unterstützten Formatzeichenfolgen in der Regel eine FormatException. Da TimeSpan jedoch nicht implementiert IFormattablewurde, ignorierte die Laufzeit die Formatzeichenfolge und rief stattdessen die TimeSpan.ToString() Methode auf. Dies bedeutet, dass die Formatzeichenfolgen zwar keine Auswirkungen auf den Formatierungsvorgang hatten, ihr Vorhandensein jedoch nicht zu einer .FormatException

In Fällen, in denen Legacycode eine zusammengesetzte Formatierungsmethode und eine ungültige Formatzeichenfolge übergibt und dieser Code nicht neu kompiliert werden kann, können Sie das <TimeSpan_LegacyFormatMode> Element verwenden, um das Legacyverhalten TimeSpan wiederherzustellen. Wenn Sie das enabled Attribut dieses Elements auf truefestlegen, führt die zusammengesetzte Formatierungsmethode zu einem Aufruf von TimeSpan.ToString(String, IFormatProvider)TimeSpan.ToString() anstelle von , und a FormatException wird nicht ausgelöst.

Beispiel

Im folgenden Beispiel wird ein TimeSpan Objekt instanziiert und versucht, es mit der String.Format(String, Object) Methode zu formatieren, indem eine nicht unterstützte Standardformatzeichenfolge verwendet wird.

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

Wenn Sie das Beispiel in .NET Framework 3.5 oder in einer früheren Version ausführen, wird die folgende Ausgabe angezeigt:

12:30:45

Dies unterscheidet sich deutlich von der Ausgabe, wenn Sie das Beispiel in .NET Framework 4 oder höher ausführen:

Invalid Format

Wenn Sie jedoch die folgende Konfigurationsdatei zum Verzeichnis des Beispiels hinzufügen und das Beispiel dann in .NET Framework 4 oder höher ausführen, ist die Ausgabe identisch mit der Ausgabe, die vom Beispiel erzeugt wird, wenn es unter .NET Framework 3.5 ausgeführt wird.

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

Siehe auch