Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee bepaalt u of de runtime het verouderde gedrag behoudt bij het opmaken van bewerkingen met System.TimeSpan waarden.
<configuratie>
<Runtime>
<TimeSpan_LegacyFormatMode>
Syntaxis
<TimeSpan_LegacyFormatMode
enabled="true|false"/>
Attributen 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 verouderde opmaakgedrag niet. |
true |
De runtime herstelt het verouderde opmaakgedrag. |
Kind elementen
Geen.
Bovenliggende elementen
Onderdeel | 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 .NET Framework 4 implementeert de structuur de IFormattable interface en ondersteunt het System.TimeSpan opmaakbewerkingen met standaard- en aangepaste opmaaktekenreeksen. Als een parseermethode een niet-ondersteunde formaatspecificatie of opmaaktekenreeks tegenkomt, wordt een FormatException.
In eerdere versies van .NET Framework werd de TimeSpan structuur niet geïmplementeerd IFormattable en ondersteunde deze geen notatietekenreeksen. Veel ontwikkelaars gingen er echter ten onrechte van uit dat dit TimeSpan wel degelijk een set opmaakreeksen ondersteunde en gebruikten deze bij samengestelde opmaakbewerkingen met methoden zoals String.Format. Normaal gesproken, als een type formaattekenreeksen implementeert IFormattable en ondersteunt, genereren aanroepen naar opmaakmethoden met niet-ondersteunde opmaaktekenreeksen meestal een FormatException. Echter, omdat TimeSpan niet geïmplementeerd IFormattable, negeerde de runtime de formaatreeks en riep in plaats daarvan de TimeSpan.ToString() methode aan. Dit betekent dat, hoewel de notatietekenreeksen geen effect hadden op de opmaakbewerking, hun aanwezigheid niet resulteerde in een FormatException.
In gevallen waarin verouderde code een samengestelde opmaakmethode en een ongeldige opmaaktekenreeks doorgeeft en die code niet opnieuw kan worden gecompileerd, kunt u het <TimeSpan_LegacyFormatMode>
element gebruiken om het 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 van TimeSpan.ToString(String, IFormatProvider), en a FormatException wordt niet gegooid.
Voorbeeld
In het volgende voorbeeld wordt een TimeSpan object geïnstantieerd en wordt geprobeerd het op te maken met de String.Format(String, Object) methode met behulp van een niet-ondersteunde standaardnotatietekenreeks.
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 .NET Framework 3.5 of op een eerdere versie, wordt de volgende uitvoer weergegeven:
12:30:45
Dit verschilt aanzienlijk van de uitvoer als u het voorbeeld uitvoert op de .NET Framework 4 of latere versie:
Invalid Format
Als u echter het volgende configuratiebestand toevoegt aan de map van het voorbeeld en het voorbeeld vervolgens uitvoert op .NET Framework 4 of een 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>