Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

<TimeSpan_LegacyFormatMode> (Elemento)

.NET Framework (current version)
 

Determina si el runtime conserva el comportamiento heredado en operaciones de formato con valores System.TimeSpan.

<TimeSpan_LegacyFormatMode  
   enabled="true|false"/>

Atributos y elementos

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo

Descripción

enabled

Atributo necesario.

Especifica si el runtime usa comportamiento de formato heredado con valores System.TimeSpan.

Atributo enabled

Valor

Descripción

false

El runtime no restaura el comportamiento de formato heredado.

true

El runtime restaura el comportamiento de formato heredado.

Elementos secundarios

Ninguno.

Elementos primarios

Elemento

Descripción

configuration

Elemento raíz de cada archivo de configuración usado por las aplicaciones de Common Language Runtime y .NET Framework.

runtime

Contiene información sobre las opciones de inicialización del motor en tiempo de ejecución.

Comenzando con .NET Framework 4, la estructura System.TimeSpan implementa la interfaz IFormattable y admite operaciones de formato con cadenas de formato estándar y personalizado. Si un método de análisis encuentra un especificador de formato o cadena de formato no compatibles, produce una excepción FormatException.

En versiones anteriores de .NET Framework, la estructura TimeSpan no implementaba IFormattable y no admitía cadenas de formato. Sin embargo, muchos programadores supusieron equivocadamente que TimeSpan era compatible con un conjunto de cadenas de formato y los usaron en operaciones de formato compuesto con métodos como String.Format. Normalmente, si un tipo implementa IFormattable y admite cadenas de formato, las llamadas a los métodos de formato con cadenas de formato no compatibles normalmente producen FormatException. No obstante, como TimeSpan no implementó IFormattable, el runtime omitió la cadena de formato y en su lugar llamó al método TimeSpan.ToString(). Esto significa que, aunque las cadenas de formato no tenían ningún efecto en la operación de formato, su presencia no producía FormatException.

Para los casos en los que el código heredado pasa un método de formato compuesto y una cadena de formato no válida y no se puede volver a compilar ese código, puede usar el elemento <TimeSpan_LegacyFormatMode> para restaurar el comportamiento heredado de TimeSpan. Al establecer el atributo enabled de este elemento en true, el método de formato compuesto produce una llamada a TimeSpan.ToString() en lugar de TimeSpan.ToString(String, IFormatProvider), y no se produce FormatException.

Ejemplo

En el siguiente ejemplo se crean instancias de un objeto TimeSpan y se le intenta dar formato con el método String.Format(String, Object) utilizando una cadena del formato estándar no compatible.

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);
   }
}

Al ejecutar el ejemplo en .NET Framework 3,5 o en una versión anterior, se muestra el siguiente resultado:

12:30:45

Esto difiere marcado de salida si ejecuta el ejemplo en .NET Framework 4 o la versión posterior:

Invalid Format

Sin embargo, si agrega el archivo de configuración siguiente al directorio de ejemplo y después ejecuta el ejemplo en .NET Framework 4 o la versión posterior, el resultado es idéntica a la que el ejemplo cuando se ejecuta en .NET Framework 3,5.

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