Delen via


<> TimeSpan_LegacyFormatMode element

Bepaalt of de runtime verouderd gedrag behoudt in opmaakbewerkingen met System.TimeSpan waarden.

<configuratie>
  <Runtime>
    <TimeSpan_LegacyFormatMode>

Syntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Kenmerken en elementen

In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven.

Kenmerken

Kenmerk Beschrijving
enabled Vereist kenmerk.

Hiermee geeft u op of de runtime gebruikmaakt van verouderd opmaakgedrag met System.TimeSpan waarden.

ingeschakeld kenmerk

Waarde Beschrijving
false De runtime herstelt het gedrag van verouderde opmaak niet.
true De runtime herstelt het verouderde opmaakgedrag.

Onderliggende elementen

Geen.

Bovenliggende elementen

Element Beschrijving
configuration Het hoofdelement in elk configuratiebestand dat wordt gebruikt door de common language runtime en .NET Framework toepassingen.
runtime Bevat informatie over opties voor runtime-initialisatie.

Opmerkingen

Vanaf de .NET Framework 4 implementeert de structuur de System.TimeSpanIFormattable interface en ondersteunt de opmaakbewerkingen met tekenreeksen met standaard- en aangepaste notatie. Als een parseringsmethode een niet-ondersteunde notatieaanduiding of notatietekenreeks aantreft, genereert deze een FormatException.

In eerdere versies van de .NET Framework heeft de TimeSpan structuur geen opmaaktekenreeksen geïmplementeerd IFormattable en deze niet ondersteund. Veel ontwikkelaars gingen er echter ten onrechte van uit dat TimeSpan een set opmaaktekenreeksen werd ondersteund en gebruikten deze in samengestelde opmaakbewerkingen met methoden zoals String.Format. Als een type opmaaktekenreeksen IFormattable implementeert en ondersteunt, wordt doorgaans een FormatExceptionaangeroepen naar opmaakmethoden met niet-ondersteunde notatietekenreeksen. Omdat TimeSpan echter niet is geïmplementeerd IFormattable, heeft de runtime de notatietekenreeks genegeerd en in plaats daarvan de TimeSpan.ToString() methode aangeroepen. Dit betekent dat, hoewel de opmaaktekenreeksen geen invloed hadden op de opmaakbewerking, hun aanwezigheid niet heeft ges gevolg in een FormatException.

Voor gevallen waarin verouderde code een samengestelde opmaakmethode en een ongeldige opmaaktekenreeks doorgeeft en die code niet opnieuw kan worden gecompileerd, kunt u het element gebruiken om het <TimeSpan_LegacyFormatMode> verouderde TimeSpan gedrag te herstellen. Wanneer u het enabled kenmerk van dit element instelt op true, resulteert de samengestelde opmaakmethode in een aanroep naar TimeSpan.ToString() in plaats TimeSpan.ToString(String, IFormatProvider)van , en wordt er FormatException geen gegenereerd.

Voorbeeld

In het volgende voorbeeld wordt een TimeSpan object geïnstitueerd en wordt geprobeerd het op te maken met de String.Format(String, Object) methode met behulp van een tekenreeks met een niet-ondersteunde standaardnotatie.

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

Wanneer u het voorbeeld uitvoert op de .NET Framework 3.5 of op een eerdere versie, wordt de volgende uitvoer weergegeven:

12:30:45

Dit wijkt duidelijk af van de uitvoer als u het voorbeeld uitvoert op de .NET Framework versie 4 of hoger:

Invalid Format

Als u echter het volgende configuratiebestand toevoegt aan de map van het voorbeeld en het voorbeeld vervolgens uitvoert op de .NET Framework 4 of latere versie, is de uitvoer identiek aan die van het voorbeeld wanneer het wordt uitgevoerd op .NET Framework 3.5.

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

Zie ook