<TimeSpan_LegacyFormatMode>, élément
Détermine si le runtime conserve le comportement hérité dans les opérations de mise en forme avec les valeurs System.TimeSpan.
<configuration>
<runtime>
<TimeSpan_LegacyFormatMode>
Syntaxe
<TimeSpan_LegacyFormatMode
enabled="true|false"/>
Attributs et éléments
Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.
Attributs
Attribut | Description |
---|---|
enabled |
Attribut requis. Indique si le runtime utilise le comportement de mise en forme hérité avec les valeurs System.TimeSpan. |
Attribut enabled
Valeur | Description |
---|---|
false |
Le runtime ne restaure pas le comportement de mise en forme hérité. |
true |
Le runtime restaure le comportement de mise en forme hérité. |
Éléments enfants
Aucune.
Éléments parents
Élément | Description |
---|---|
configuration |
Élément racine de chaque fichier de configuration utilisé par le Common Language Runtime et les applications .NET Framework. |
runtime |
Contient des informations sur les options d'initialisation du runtime. |
Notes
À compter du .NET Framework 4, la structure System.TimeSpan implémente l’interface IFormattable et prend en charge les opérations de mise en forme avec des chaînes de format standard et personnalisées. Si une méthode d’analyse rencontre un spécificateur de format ou une chaîne de format non pris en charge, elle lève une FormatException.
Dans les versions précédentes du .NET Framework, la structure TimeSpan n’implémentait pas IFormattable et ne prenait pas en charge les chaînes de format. Toutefois, de nombreux développeurs ont supposé à tort que TimeSpan prenait en charge un ensemble de chaînes de format et les ont utilisées dans des opérations de mise en forme composite avec des méthodes telles que String.Format. Normalement, si un type implémente IFormattable et prend en charge des chaînes de format, les appels aux méthodes de mise en forme avec des chaînes de format non prises en charge lèvent généralement une FormatException. Toutefois, comme TimeSpan n’a pas implémenté IFormattable, le runtime a ignoré la chaîne de format et a appelé la méthode TimeSpan.ToString() à la place. Cela signifie que, même si les chaînes de format n’ont eu aucun effet sur l’opération de mise en forme, leur présence n’a pas entraîné de FormatException.
Dans les cas où le code hérité passe une méthode de mise en forme composite et une chaîne de format non valide, et où ce code ne peut pas être recompilé, vous pouvez utiliser l’élément <TimeSpan_LegacyFormatMode>
pour restaurer le comportement TimeSpan hérité. Lorsque vous définissez l’attribut enabled
de cet élément sur true
, la méthode de mise en forme composite entraîne un appel à TimeSpan.ToString() plutôt qu’à TimeSpan.ToString(String, IFormatProvider), et une FormatException n’est pas levée.
Exemple
L’exemple suivant instancie un objet TimeSpan et tente de le mettre en forme avec la méthode String.Format(String, Object) en utilisant une chaîne de format standard non prise en charge.
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
Lorsque vous exécutez l’exemple sur .NET Framework 3.5 ou une version antérieure, la sortie suivante s’affiche :
12:30:45
Cela diffère nettement de la sortie si vous exécutez l’exemple sur .NET Framework 4 ou version ultérieure :
Invalid Format
Toutefois, si vous ajoutez le fichier de configuration suivant au répertoire de l’exemple, puis exécutez l’exemple sur .NET Framework 4 ou ultérieur, la sortie est identique à celle produite par l’exemple lorsqu’il est exécuté sur .NET Framework 3.5.
<?xml version ="1.0"?>
<configuration>
<runtime>
<TimeSpan_LegacyFormatMode enabled="true"/>
</runtime>
</configuration>