<TimeSpan_LegacyFormatMode> Elemen

Menentukan apakah runtime mempertahankan perilaku lama dalam operasi pemformatan dengan System.TimeSpan nilai.

<configuration>
  <runtime>
    <TimeSpan_LegacyFormatMode>

Sintaksis

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Atribut dan Elemen

Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.

Atributs

Karakteristik Deskripsi
enabled Atribut yang diperlukan.

Menentukan apakah runtime menggunakan perilaku pemformatan lama dengan System.TimeSpan nilai.

Atribut yang diaktifkan

Nilai Deskripsi
false Runtime tidak memulihkan perilaku pemformatan warisan.
true Runtime memulihkan perilaku pemformatan lama.

Elemen Anak

Tidak ada.

Elemen Induk

Elemen Deskripsi
configuration Elemen akar dalam setiap file konfigurasi yang digunakan oleh runtime bahasa umum dan aplikasi .NET Framework.
runtime Berisi informasi tentang opsi inisialisasi runtime.

Komentar

Dimulai dengan .NET Framework 4, struktur mengimplementasikan System.TimeSpanIFormattable antarmuka dan mendukung operasi pemformatan dengan string format standar dan kustom. Jika metode penguraian menemukan penentu format atau string format yang tidak didukung, metode penguraian akan melemparkan FormatException.

Dalam versi .NET Framework sebelumnya, TimeSpan struktur tidak mengimplementasikan IFormattable dan tidak mendukung string format. Namun, banyak pengembang secara keliru berasumsi bahwa TimeSpan memang mendukung serangkaian string format dan menggunakannya dalam operasi pemformatan komposit dengan metode seperti String.Format. Biasanya, jika jenis mengimplementasikan IFormattable dan mendukung string format, panggilan ke metode pemformatan dengan string format yang tidak didukung biasanya melemparkan .FormatException Namun, karena TimeSpan tidak mengimplementasikan IFormattable, runtime mengabaikan string format dan malah memanggil metode tersebut TimeSpan.ToString() . Ini berarti bahwa, meskipun string format tidak berpengaruh pada operasi pemformatan, keberadaannya tidak menghasilkan .FormatException

Untuk kasus di mana kode lama meneruskan metode pemformatan komposit dan string format yang tidak valid, dan kode tersebut tidak dapat dikompilasi ulang, Anda dapat menggunakan elemen untuk <TimeSpan_LegacyFormatMode> memulihkan perilaku lama TimeSpan . Saat Anda mengatur enabled atribut elemen ini ke true, metode pemformatan komposit menghasilkan panggilan ke TimeSpan.ToString() dan bukan TimeSpan.ToString(String, IFormatProvider), dan a FormatException tidak dilemparkan.

Contoh

Contoh berikut membuat TimeSpan instance objek dan mencoba memformatnya dengan String.Format(String, Object) metode dengan menggunakan string format standar yang tidak didukung.

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

Saat Anda menjalankan contoh di .NET Framework 3.5 atau pada versi sebelumnya, ini menampilkan output berikut:

12:30:45

Ini sangat berbeda dari output jika Anda menjalankan contoh pada .NET Framework 4 atau versi yang lebih baru:

Invalid Format

Namun, jika Anda menambahkan file konfigurasi berikut ke direktori contoh dan kemudian menjalankan contoh pada .NET Framework 4 atau versi yang lebih baru, outputnya identik dengan yang dihasilkan oleh contoh saat dijalankan di .NET Framework 3.5.

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

Lihat juga