<> TimeSpan_LegacyFormatMode 요소

런타임이 값을 사용하여 작업의 서식을 지정할 때 레거시 동작을 유지할지 여부를 결정합니다 System.TimeSpan .

<구성>
  <런타임>
    <TimeSpan_LegacyFormatMode>

구문

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

특성 및 요소

다음 섹션에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

attribute Description
enabled 필수 특성입니다.

런타임에서 값과 함께 System.TimeSpan 레거시 서식 동작을 사용할지 여부를 지정합니다.

enabled 특성

Description
false 런타임은 레거시 서식 지정 동작을 복원하지 않습니다.
true 런타임은 레거시 서식 지정 동작을 복원합니다.

자식 요소

없음

부모 요소

요소 Description
configuration 공용 언어 런타임 및 .NET Framework 애플리케이션에서 사용하는 모든 구성 파일의 루트 요소입니다.
runtime 런타임 초기화 옵션에 대한 정보를 포함합니다.

설명

.NET Framework 4부터 구조체는 System.TimeSpan 인터페이스를 IFormattable 구현하고 표준 및 사용자 지정 형식 문자열을 사용하여 서식 지정 작업을 지원합니다. 구문 분석 메서드가 지원되지 않는 형식 지정자 또는 형식 문자열 FormatException을 발견하면 .

이전 버전의 .NET Framework 구조체가 TimeSpan 구현 IFormattable 되지 않았으며 형식 문자열을 지원하지 않았습니다. 그러나 많은 개발자가 실수로 형식 문자열 집합을 지원한다고 가정 TimeSpan 하고 다음과 같은 String.Format메서드를 사용하여 복합 서식 지정 작업에 사용했습니다. 일반적으로 형식이 형식 문자열을 IFormattable 구현하고 지원하는 경우 지원되지 않는 형식 문자열을 사용하여 메서드를 포맷하는 호출은 일반적으로 throw됩니다 FormatException. 그러나 구현IFormattable하지 않았기 때문에 TimeSpan 런타임은 형식 문자열을 무시하고 대신 메서드를 TimeSpan.ToString() 호출했습니다. 즉, 형식 문자열이 서식 지정 작업에 영향을 주지 않았지만 해당 문자열의 존재로 인해 FormatException.

레거시 코드가 복합 서식 지정 메서드와 잘못된 형식 문자열을 전달하고 해당 코드를 다시 컴파일할 수 없는 경우 요소를 사용하여 <TimeSpan_LegacyFormatMode> 레거시 TimeSpan 동작을 복원할 수 있습니다. 이 요소true의 특성을 설정 enabled 하면 복합 서식 지정 메서드가 호출 TimeSpan.ToString() 이 아닌 TimeSpan.ToString(String, IFormatProvider)호출이 발생하며 throw FormatException 되지 않습니다.

예제

다음 예제에서는 지원되지 않는 표준 형식 String.Format(String, Object) 문자열을 사용하여 개체를 인스턴스화 TimeSpan 하고 메서드로 서식을 지정하려고 시도합니다.

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

.NET Framework 3.5 또는 이전 버전에서 예제를 실행하면 다음 출력이 표시됩니다.

12:30:45

.NET Framework 4 이상 버전에서 예제를 실행하는 경우 출력과 현저하게 다릅니다.

Invalid Format

그러나 다음 구성 파일을 예제의 디렉터리에 추가한 다음 .NET Framework 4 이상 버전에서 예제를 실행하는 경우 출력은 .NET Framework 3.5에서 실행될 때 예제에서 생성한 출력과 동일합니다.

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

추가 정보