Megosztás a következőn keresztül:


<> TimeSpan_LegacyFormatMode elem

Meghatározza, hogy a futtatókörnyezet megőrzi-e az örökölt viselkedést az értékekkel rendelkező System.TimeSpan formázási műveletekben.

<Konfigurációs>
  <Runtime>
    <TimeSpan_LegacyFormatMode>

Syntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Attribútumok és elemek

Az alábbi szakaszok az attribútumokat, a gyermekelemeket és a szülőelemeket ismertetik.

Attribútumok

Attribútum Leírás
enabled Kötelező attribútum.

Meghatározza, hogy a futtatókörnyezet örökölt formázási viselkedést használ-e értékekkel System.TimeSpan .

enabled attribute

Érték Leírás
false A futtatókörnyezet nem állítja vissza az örökölt formázási viselkedést.
true A futtatókörnyezet visszaállítja az örökölt formázási viselkedést.

Gyermekelemek

Nincsenek.

Szülőelemek

Elem Leírás
configuration A közös nyelvi futtatókörnyezet és .NET-keretrendszer alkalmazások által használt összes konfigurációs fájl gyökéreleme.
runtime Információkat tartalmaz a futtatókörnyezet inicializálási beállításairól.

Megjegyzések

A .NET-keretrendszer 4-től kezdve a System.TimeSpan struktúra implementálja a felületet, és támogatja a IFormattable formázási műveleteket standard és egyéni formázási sztringekkel. Ha egy elemzési módszer nem támogatott formátumkijelölővel vagy formázási sztringgel találkozik, a függvény egy FormatExceptionértéket ad.

A .NET-keretrendszer korábbi verzióiban a TimeSpan struktúra nem implementálva IFormattable lett, és nem támogatja a formázási sztringeket. Sok fejlesztő azonban tévesen azt feltételezte, hogy TimeSpan támogatja a formázási sztringek készletét, és olyan módszerekkel végzett összetett formázási műveletekben használta őket, mint a String.Format. Általában, ha egy típus implementálja és támogatja a formázási IFormattable sztringeket, a nem támogatott formázási sztringekkel rendelkező formázási metódusok általában egy FormatExceptionértéket adnak. TimeSpan Mivel azonban nem implementáltaIFormattable, a futtatókörnyezet figyelmen kívül hagyta a formátumsztringet, és inkább metódusnak nevezte.TimeSpan.ToString() Ez azt jelenti, hogy bár a formázási sztringek nem voltak hatással a formázási műveletre, jelenlétük nem eredményezett FormatException.

Azokban az esetekben, amikor az örökölt kód egy összetett formázási módszert és egy érvénytelen formázási sztringet ad át, és a kód nem fordítható újra, az <TimeSpan_LegacyFormatMode> elem használatával visszaállíthatja az örökölt viselkedést TimeSpan . Amikor ennek az elemnek az enabled attribútumát a értékre trueállítja, az összetett formázási módszer a helyett a hívását TimeSpan.ToString()TimeSpan.ToString(String, IFormatProvider)eredményezi, és az a FormatException nem lesz eldobva.

Példa

Az alábbi példa egy TimeSpan objektumot példányosít, és megkísérli formázni a String.Format(String, Object) metódussal egy nem támogatott szabványos formátumsztring használatával.

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

Amikor a példát a .NET-keretrendszer 3.5-ös vagy korábbi verzióján futtatja, a következő kimenet jelenik meg:

12:30:45

Ez jelentősen eltér a kimenettől, ha a példát a .NET-keretrendszer 4-es vagy újabb verziójában futtatja:

Invalid Format

Ha azonban hozzáadja a következő konfigurációs fájlt a példa könyvtárához, majd futtatja a példát a .NET-keretrendszer 4-es vagy újabb verzióban, a kimenet megegyezik a példában a 3.5-ös .NET-keretrendszer futtatáskor előállított kimenettel.

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

Lásd még