Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Determina se il runtime mantiene il comportamento legacy nelle operazioni di formattazione con System.TimeSpan i valori.
<configurazione>
<Runtime>
<TimeSpan_LegacyFormatMode>
Sintassi
<TimeSpan_LegacyFormatMode
enabled="true|false"/>
Attributi ed elementi
Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.
Attributi
Attributo | Descrizione |
---|---|
enabled |
Attributo obbligatorio. Specifica se il runtime utilizza il comportamento di formattazione legacy con System.TimeSpan i valori. |
Attributo abilitato
Valore | Descrizione |
---|---|
false |
Il runtime non ripristina il comportamento di formattazione legacy. |
true |
Il runtime ripristina il comportamento di formattazione legacy. |
Elementi figli
Nessuno.
Elementi padre
Elemento | Descrizione |
---|---|
configuration |
Elemento radice di ogni file di configurazione utilizzato da Common Language Runtime e dalle applicazioni .NET Framework. |
runtime |
Contiene informazioni sulle opzioni di inizializzazione del runtime. |
Osservazioni:
A partire da .NET Framework 4, la System.TimeSpan struttura implementa l'interfaccia IFormattable e supporta le operazioni di formattazione con stringhe di formato standard e personalizzate. Se un metodo di analisi rileva un identificatore di formato o una stringa di formato non supportato, genera un FormatExceptionfile .
Nelle versioni precedenti di .NET Framework, la TimeSpan struttura non implementava IFormattable e non supportava le stringhe di formato. Tuttavia, molti sviluppatori hanno erroneamente ipotizzato che TimeSpan supportasse un set di stringhe di formato e le hanno utilizzate in operazioni di formattazione composita con metodi quali String.Format. In genere, se un tipo implementa e supporta stringhe di IFormattable formato, le chiamate ai metodi di formattazione con stringhe di formato non supportate generano in genere un file .FormatException Tuttavia, poiché TimeSpan non è stato implementato IFormattable, il runtime ha ignorato la stringa di formato e ha invece chiamato il TimeSpan.ToString() metodo. Ciò significa che, sebbene le stringhe di formato non abbiano avuto alcun effetto sull'operazione di formattazione, la loro presenza non ha generato un FormatException.
Per i casi in cui il codice legacy passa un metodo di formattazione composito e una stringa di formato non valida e tale codice non può essere ricompilato, è possibile utilizzare l'elemento <TimeSpan_LegacyFormatMode>
per ripristinare il comportamento legacy TimeSpan . Quando si imposta l'attributo enabled
di questo elemento su true
, il metodo di formattazione composito genera una chiamata a anziché TimeSpan.ToString(String, IFormatProvider)a TimeSpan.ToString() e non viene generato aFormatException.
Esempio
Nell'esempio seguente viene creata un'istanza di un TimeSpan oggetto e si tenta di formattarlo con il String.Format(String, Object) metodo utilizzando una stringa di formato standard non supportata.
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
Quando si esegue l'esempio in .NET Framework 3.5 o in una versione precedente, viene visualizzato l'output seguente:
12:30:45
Questo differisce notevolmente dall'output se si esegue l'esempio in .NET Framework 4 o versione successiva:
Invalid Format
Tuttavia, se si aggiunge il file di configurazione seguente alla directory dell'esempio e quindi si esegue l'esempio in .NET Framework 4 o in una versione successiva, l'output è identico a quello prodotto dall'esempio quando viene eseguito in .NET Framework 3.5.
<?xml version ="1.0"?>
<configuration>
<runtime>
<TimeSpan_LegacyFormatMode enabled="true"/>
</runtime>
</configuration>