<TimeSpan_LegacyFormatMode> 요소

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

<configuration>
  <runtime>
    <TimeSpan_LegacyFormatMode>

구문

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

특성 및 요소

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

특성

특성 설명
enabled 필수 특성입니다.

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

enabled 특성

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

자식 요소

없음

부모 요소

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

설명

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

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

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

예제

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

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>

참고 항목