Windows ストアアプリ: .NET scripting backend のプロジェクトの解説
Windows ストアアプリ: .NET Scripting Backend でのプラグイン設定

Windows ストアアプリ: .NET Scripting Backend で未対応の .NET 型

Windows ストアで使用される .NET スクリプティングバックエンドは、このプラットフォームのための特別な .NET バージョンで、Mono と完全に一致しているわけではありません。例えば、データタイプのいくつかがなかったり、あるクラスでは Mono にはあるメソッドがない、といった具合です。

すでにあるゲームを Windows ストアアプリとしての移植を簡単にするため、未対応のいくつかの .NET 型は Unity から提供されています。加えていくつかの拡張メソッドと代わりの型が追加されているためマイグレーションを容易にしています。

それらの型は PlaybackEngines\metrosupport\Managed\WinRTLegacy.dll に保管されており、各 Windows ストア SDK にそれぞれの 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 が追加のクラスと拡張メソッドを提供します。次のものです。

  • 多くの System.IO クラスでの拡張メソッド Close() (代わりに Mono でも Windows ストアアプリの .NET でも使用可能な Dispose() を使うこともできます)
  • WinRTLegacy.TypeExtensions には System.Type のための GetConstructor()、GetMethod()、GetProperty() があります
  • WinRTLegacy.IO.StreamReader クラスは Mono の System.IO.StreamReader と互換性があります
  • WinRTLegacy.IO.StreamWriter クラスは Mono の System.IO.StreamWriter と互換性があります
  • WinRTLegacy.Xml.XmlReader クラスは Mono の System.Xml.XmlReader と互換性があります
  • WinRTLegacy.Xml.XmlWriter クラスは Mono の System.Xml.XmlWriter と互換性があります

代わりとなる WinRTLegacy のクラスを使用するシンプルな方法は次のようなプリプロセッサディレクティブを使用することです。

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

この方法では Windows ストアアプリの場合 System.Xml 名前空間ではなく WinRTLegacy.Xml 名前空間から XmlReader クラスを利用します。

ユニバーサル Windows 10 アプリ

いくつかの型は、ユニバーサル Windows 10 アプリの .NET に戻ってきました。そのため、それらの型の実装は WinRTLegacy.dll から除かれました。

Windows ストアアプリ: .NET scripting backend のプロジェクトの解説
Windows ストアアプリ: .NET Scripting Backend でのプラグイン設定