Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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>