Dela via


< > TimeSpan_LegacyFormatMode Element

Avgör om körningen bevarar äldre beteende i formateringsåtgärder med System.TimeSpan värden.

<konfiguration>
   <Runtime>
     <TimeSpan_LegacyFormatMode>

Syntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element.

Egenskaper

Egenskap Beskrivning
enabled Obligatoriskt attribut.

Anger om körningen använder äldre formateringsbeteende med System.TimeSpan värden.

aktiverat attribut

Värde Beskrivning
false Körningen återställer inte äldre formateringsbeteende.
true Körningen återställer äldre formateringsbeteende.

Underordnade element

Ingen.

Överordnade element

Komponent Beskrivning
configuration Rotelementet i varje konfigurationsfil som används av Common Language Runtime och .NET Framework program.
runtime Innehåller information om alternativ för initiering vid körning.

Anmärkningar

Från och med .NET Framework 4 System.TimeSpan implementerar IFormattable strukturen gränssnittet och stöder formateringsåtgärder med standard- och anpassade formatsträngar. Om en tolkningsmetod stöter på en formatspecificerare eller formatsträng som inte stöds genereras en FormatException.

I tidigare versioner av .NET Framework TimeSpan implementerades IFormattable inte strukturen och hade inte stöd för formatsträngar. Många utvecklare antog dock felaktigt att det TimeSpan hade stöd för en uppsättning formatsträngar och använde dem i sammansatta formateringsoperationer med metoder som String.Format. Vanligtvis, om en typ implementerar IFormattable och stöder formatsträngar, genererar anrop till formateringsmetoder med formatsträngar som inte stöds vanligtvis en FormatException. Men eftersom TimeSpan det inte implementerades IFormattableignorerade körningen formatsträngen och anropade TimeSpan.ToString() i stället metoden. Det innebär att även om formatsträngarna inte hade någon effekt på formateringsåtgärden, resulterade deras närvaro inte i en FormatException.

I de fall där äldre kod skickar en sammansatt formateringsmetod och en ogiltig formatsträng, och koden inte kan kompileras om, kan du använda <TimeSpan_LegacyFormatMode> elementet för att återställa det äldre TimeSpan beteendet. När du ställer in attributet för det här elementet enabledtruepå resulterar den sammansatta formateringsmetoden i ett anrop till i stället TimeSpan.ToString(String, IFormatProvider)för TimeSpan.ToString() , och a FormatException genereras inte.

Exempel

I följande exempel instansieras ett TimeSpan objekt och ett försök att formatera det med String.Format(String, Object) metoden med hjälp av en standardformatsträng som inte stöds.

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

När du kör exemplet på .NET Framework 3.5 eller på en tidigare version visas följande utdata:

12:30:45

Detta skiljer sig markant från utdata om du kör exemplet på .NET Framework 4 eller senare version:

Invalid Format

Men om du lägger till följande konfigurationsfil i exemplets katalog och sedan kör exemplet på .NET Framework 4 eller en senare version, är utdata identiska med det som skapas av exemplet när det körs på .NET Framework 3.5.

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

Se även