Version: 2017.2
유니버설 Windows 플랫폼: .NET 스크립팅 백엔드로 생성된 프로젝트
유니버설 Windows 플랫폼: .NET 스크립팅 백엔드의 플러그인

유니버설 Windows 플랫폼: .NET 스크립팅 백엔드에서 결여된 .NET 타입

유니버설 Windows 앱에서 사용하는 .NET 스크립팅 백엔드는 해당 플랫폼의 특수 .NET 버전이며, Mono와는 완전히 호환되지 않습니다. 특히 몇몇 데이터 타입이 없는 경우가 있으며, 일부 클래스는 특정 메서드가 Mono에는 있더라도 없는 경우가 있습니다.

기존 게임을 유니버설 Windows 플랫폼으로 쉽게 포팅할 수 있도록 Unity는 몇몇 결여된 .NET 타입을 제공합니다. 또한 일부 확장 메서드와 교체 타입이 추가되어 포팅을 더욱 간편하게 합니다. 이들 타입은 PlaybackEngines\metrosupport\Managed\WinRTLegacy.dll에 있습니다.

아래는 Unity가 제공하는 타입 중 일부입니다.

  • System.Collections.ArrayList
  • System.Collections.Hashtable
  • System.Collections.Queue
  • System.Collections.SortedList
  • System.Collections.Stack
  • System.Collections.Specialized.HybridDictionary
  • System.Collections.Specialized.ListDictionary
  • System.Collections.Specialized.NameValueCollection
  • System.Collections.Specialized.OrderedDictionary
  • System.Collections.Specialized.StringCollection
  • System.IO.Directory
  • System.IO.File
  • System.IO.FileStream
  • System.Xml.XmlDocument
  • System.Xml.XmlTextReader
  • System.Xml.XmlTextWriter

이와 더불어 WinRTLegacy 네임스페이스가 추가되어 추가 클래스와 확장 메서드를 제공합니다. 아래는 그 예제입니다.

  • Close()는 대부분의 System.IO 클래스에 대한 확장 메서드입니다(또는 유니버설 Windows 플랫폼용 Mono와 .NET에서 모두 지원되는 Dispose()로 대체 가능).
  • WinRTLegacy.TypeExtensions은 System.Type용 GetConstructor(), GetMethod(), GetProperty() 메서드를 가집니다.
  • Mono System.IO.StreamReader와 호환되는 WinRTLegacy.IO.StreamReader 클래스
  • Mono System.IO.StreamWriter와 호환되는 WinRTLegacy.IO.StreamWriter 클래스
  • Mono System.Xml.XmlReader와 호환되는 WinRTLegacy.Xml.XmlReader 클래스
  • Mono System.Xml.XmlWriter와 호환되는 WinRTLegacy.Xml.XmlWriter 클래스

네임스페이스가 일치하지 않을 때 WinRTLegacy 교체 클래스를 사용하는 가장 간단한 방법은 아래와 같이 디렉티브를 사용하는 것입니다.

#if NETFX_CORE
using XmlReader = WinRTLegacy.Xml.XmlReader;
#else
using XmlReader = System.Xml.XmlReader;
#endif

이렇게 하면 다른 곳에 있는 유니버설 Windows 플랫폼과 System.Xml 네임스페이스의 WinRTLegacy.Xml에서 가져온 XmlReader 클래스를 사용할 수 있습니다.


• 2017–05–16 편집 리뷰 없이 페이지 수정됨

유니버설 Windows 플랫폼: .NET 스크립팅 백엔드로 생성된 프로젝트
유니버설 Windows 플랫폼: .NET 스크립팅 백엔드의 플러그인