다음을 통해 공유


< > TimeSpan_LegacyFormatMode 요소

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

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

문법

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Attributes와 Elements

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

특성

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

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

enabled 속성

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

자식 요소

없음.

부모 요소

요소 설명
configuration 공용 언어 런타임 및 .NET Framework 응용 프로그램에서 사용하는 모든 구성 파일의 루트 요소입니다.
runtime 런타임 초기화 옵션에 대한 정보를 포함합니다.

비고

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

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

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

참고하십시오