
このトピックでは、Windows上のSilverlight 3とWindows Phone上のSilverlightの実装の違いについて説明します。
SilverlightがWindows Phoneで
サポートするものをよく理解し、
サポートされていない型とメンバーに関する情報をより詳しく知ることをお勧めします。
コントロールサポートされているコントロールのリストを表示するには、
別の記事をご覧
ください 。
メディアこの場合も、
携帯電話の
メディアのソースを参照することをお勧めします。
ディープズームSilverlight for Windows Phoneは、可能であれば常に
MultiScaleImageのハードウェアアクセラレーションを使用します。 その結果、
CacheModeプロパティへの変更
は無視されます。
代表者非同期デリゲート、特に
BeginInvokeおよび
EndInvokeメソッドは、.NET Compact Frameworkではサポートされていません。 デリゲートを非同期で呼び出そうとすると、アプリケーションは
NotSupportedExceptionではなく
TargetInvocationExceptionをスローします。
ファイナライザー管理制限区域 (CER)は、Silverlight for Windows Phoneではサポートされていません。
フォント利用可能なすべてのフォントにはROMが付属しています。 Silverlightにはフォントはインストールされていません。 VerdanaやSegoeなどのWebセーフフォントが推奨されます。 Visual Studio 2010 Express for Windows Phone CTPには、Windows Phone 7シリーズでサポートされているフォントを表示するフィルターが含まれています。 デバイス上に存在しないフォントを使用する場合は、アプリケーションで提供することをお勧めします。 TrueTypeフォントも推奨されます。 埋め込みフォントは、マネージコードでランタイムをサポートするための埋め込みリソースとしてDLLまたはXAPに追加する必要があります。
グラフィックスグラフィック、アニメーション、および
ぼかしや
ドロップシャドウなどの効果
がサポートされています。 Silverlight for Windows Phoneのすべてのエフェクトはハードウェアアクセラレーションを使用できるため、
UIElementの
CacheModeを
BitmapCacheに設定する必要があります。
ネイティブピクセルシェーダーはサポートされていないため、
PixelShaderもサポートされていません。 より詳細な
グラフィックと
アニメーション情報 。
宿泊施設Windows Phone上のすべてのSilverlightアプリケーションはクライアントデバイスに保存され、ブラウザー内で実行され
ません 。 ブラウザー内の配置に基づくSilverlightのすべての機能は使用できません。 これには、HTML DOMブリッジ、JavaScriptを使用する機能、および
オブジェクトプラグインへのリンクが含まれます入るコントロールは、指でタッチ、押し、「運転」などのさまざまなジェスチャーをサポートします。 マウスイベントを使用して、タップ、ダブルタップ、タップ、ホールドの簡単な動作を処理できます。
制御イベントを使用して、ユーザー入力に応答することもできます。 コントロールイベントはマルチタッチ入力をサポートし、
UIElementオブジェクトの移動とスケーリングに使用できます。 さらに、
「方法:操作イベントを処理する
」も参照してください。
分離ストレージ分離ストレージにより、アプリケーションは仮想ファイルシステムにデータを格納できます。 データは他のシステムコンポーネントから完全に隔離されます。 これにより、データを保存する別のアプリケーションのコンポーネントによる不正アクセスとデータ破損を防ぎます。
Windows Phoneのサンドボックスストレージは、Silverlightアプリケーションの追加のストレージクォータクォータを提供しません。
Windows Phoneのアプリケーションのサイズは、最大2 GBに達する可能性があります。
プラットフォーム実装の違いは次のとおりです。
関連する記事で
分離ストレージの詳細を読むことができます:
分離ストレージと
System.IO.IsolatedStorageLINQネイティブデータソースのLINQプロバイダーは、Silverlight for Windows Phoneではサポートされていません。
ローカリゼーションローカライズをサポートする一部のタイプとメンバーは、多少異なる動作をします。
- 独自のカルチャは、カスタムの書式設定が必要な場合に標準の書式設定を返します。 たとえば、08/31/2006 12:30:15 PMは8/31/06 12:30:15 PMとして返されます。
- フォーマットおよび解析時にニュートラルカルチャを使用できないため、ストリームの現在のカルチャとしてニュートラルカルチャを設定できません。
- DateTimeFormatInfo.GetEraは、fr-FRカルチャに対して-1を返します
- DateTimeFormatInfo.GetEraNameメソッドは、場合によっては誤った値を返します。 予想されるADの代わりに、DCストリングの同じfr-FRローカリゼーション
- DateTime.ToStringは、 ロシアの日付に対して誤った文字列を返します。 たとえば、2000年6月15日ではなく、2000年6月15日を取得します。
- Double.ToString()は、独自の形式を使用する場合、数値のグループ間のカンマ区切り文字を含む有効な文字列を返しません。
多感覚および制御イベントマルチテンソルと操作イベントを操作するために、Windows PhoneのSilverlightは、Silverlight 3にはないタイプ、メンバー、およびイベントをサポートします。詳細については、「
方法:操作イベントを処理する」を参照してください。
ナビゲーションWindows Phone上のSilverlightは、Windows以外のページナビゲーションモデルを提供します。
フレームクラスと
ページクラスはサポートされていません。詳細については、トピック
フレームとページナビゲーションを参照してください。
ネットワークネットワークサポートには、Windows Communication Foundation(WCF)、
HttpWebRequest、および
WebClientが含まれます 。
ネイティブ接続とソケットはサポートされていません。
ChannelFactory(TChannel)はサポートされておらず、委任状を動的に生成できないためです。 コンパイル時に委任状を生成するには、コンソールでslsvcutil.exeを使用する必要があります。
Visual Studioの[サービス参照の追加]オプションは、コンパイル時に有効にできるプロキシも生成します。 このオプションは、Community Technology PreviewバージョンのWindows Phoneプロジェクトでは使用できません。
XmlSerializerFormatAttributeクラスの
Styleプロパティはサポートされていません。
これはサポートされていない機能のすべてではありません。詳細については
こちらに記載されてい
ます 。
性能デバイスは、デスクトップコンピューターよりもプロセッサー能力、ストレージ、およびメモリーが少なくなります。 また、バッテリー寿命も限られています。 特にアニメーションとメディアを使用するアプリケーションでは、これらの事実に基づいてアプリケーションを設計する必要があります。 一部のデバイスは、複数の
Storyboardオブジェクトを使用する場合、または多数のXAML要素を操作する場合に速度が低下する可能性があります。
複雑な変換を適用しながらXAMLコードを最適化するために、Windows PhoneのSilverlightは
CompositeTransformをサポートします。
反射リフレクションの実装は、デスクトップの実装とは異なります。
- 一部のタイプとメンバーはサポートされていません。リストはWindows Phoneのクラスライブラリサポートにあります。
- オープンジェネリック型はサポートされていません。
- GetTypeメソッドのignoreCaseパラメーターはサポートされていません。 大文字と小文字を区別する型名を使用する必要があります。
- Silverlight 3と.NET Compact Frameworkのバインダー実装には、動作と機能の違いがあります。
- 等価演算子(==)は、2つのMethodInfoオブジェクトに対してtrueを返しません。
- System.Reflection.Emit名前空間はサポートされていません
- GetNestedTypesは 、 BindingFlagsの値に関係なく、すべてのネストされた型を返します。
- AssemblyName.GetPublicKeyTokenは、バイト[0] PKTまたはPublicKeyToken = nullを含むアセンブリの名前に対して、バイト[0]の代わりにnullを返します。
- declaringTypeパラメーターの場合、 MethodBase.GetMethodFromHandle(MethodHandle、TypeHandle)はRuntimeTypeHandleの代わりにRuntimeMethodHandleを使用します。
- WaitHandle.WaitAllは、.NET Compact Frameworkではサポートされていません。
- AssemblyName()。ToString()およびAssembly.FullNameは、標準コンストラクターを使用してAssemblyNameオブジェクトを初期化するときにSystem.Reflection.AssemblyNameを返します。
- ParameterInfo.DefaultValueはnullを返します
- Type.GetMemberメソッドは 、名前が正規表現で指定されている場合、指定された名前のパブリックメンバーを返しません。
- Type.GetMethodsメソッドとType.GetMembersメソッドは、同じオブジェクトインスタンスを返しません。
- AssemblyName.FullNameは、 PublicKeyTokenのデフォルト情報を返しません。 .NET Compact Frameworkは、アセンブリ名のみを提供します。 カルチャ、バージョン、およびPKT情報を比較するには、個別の方法を使用する必要があります。
- FieldInfo.ToString()は、boolを指す場合、 Boolean []ではなくSystem.Boolean []を返します。
- Type.GetMethod(String、Type [])はSetメソッド(Int32、System.String)に対してnullのMethodInfo値を返しますが、デスクトップはMethodInfoを返しますが、これは決してnullではありません。
- Type.AssemblyQualifiedNameの戻り値はプラットフォーム間で異なります。 たとえば、Windows PhoneでのSilverlightのAssemblyQualifiedNameの戻り値は、MyType、MyAssembly、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = b17a5c561934e089のようになります。 デスクトップ上の同等: MyType、MyAssembly、バージョン= 1.0.0.0、カルチャー=ニュートラル、PublicKeyToken = B17A5C561934E089
正規表現Silverlight for Windows Phoneでは、Regexクラスの実装はキャッシュをサポートしないため、CacheSizeプロパティは常にゼロを返します。
ランタイムWindows Phone 7シリーズのSilverlightは、.NET Compact Frameworkで実行されます。
安全性X509証明書との違いは、X509Certificateの作成時に間違ったフラグを渡すと、
ArgumentExceptionの代わりにNotSupportedExceptionがスローされることです。
一口TextBoxコントロールにソフトウェア入力パネル(SIP)を使用できるようにするために、Silverlight for Windows Phoneは、Silverlight 3にはないいくつかのタイプとメンバーをサポートしています。詳細については、「
方法:TextBoxでSIPレイアウトを指定する」を参照してください
。
Windows Phone用のSilverlight拡張機能 。
Silverlight for Windows Phoneの拡張機能Windows Phoneの開発に固有の追加機能については、Windows Phoneの
クラスライブラリリファレンスを再度お読みください。 この機能はすべて、Windows Phone開発者ツールに含まれています。
テキストエンコーディングエンコーダーEncoding.Unicodeは、System.Text.UnicodeEncodingおよびUnicodeEncoderに名前が変更されました。
Decoder Encoding.Unicodeの名前がSystem.Text.UnicodeEncodingおよびUnicodeDecoderに変更されました
ストリームSilverlight 3とは異なり、Silverlight for Windows Phoneはアニメーションを2つの独立したストリームに分割して、デバイスのパフォーマンスを向上させます。
ThreadStaticAttributeは 、.NET Compact Frameworkでは使用されません。
URIHttpUtilityクラスは
System.Net名前空間にあります。 Windowsでは、このクラスは
System.Windows.Browser名前空間にあり
ますが 、Windows Phoneプラットフォームではサポートされていません。
Uri.LocalPathは、スラッシュ(/)をバックスラッシュ(\)に変換しません。 ファイル(ファイル://)のURIは無効であるためです。 パスは相対パスとして返されます。
URIインスタンスの
OriginalStringプロパティは、URLに渡す前にスペースを切り捨てます。
ビジュアルベーシック.NET Compact Frameworkでは、Visual BasicのLINQクエリの構文は、演算子がオプションであるSelect句をサポートしていません。 選択条件に標準クエリ結果を変更しないパラメーターが含まれていない場合、選択条件を削除する必要があります。
このリリースでは、Visual Basicはサポートされていません。実行時のVisual Basicは、XNamespaceおよびStringオブジェクトへの参照との同等性を検証できません。
Xaml変換複数の変換を適用するときにXAMLを最適化するために、Windows PhoneのSilverlightは
CompositeTransformをサポートします。
XML.NET Compact FrameworkはDocument Type Definition(DTD)をサポートしていないため、
解析はサポートされていません。 アプリケーションは、XMLでDTD文字列を検出するとNotSupportedExeptionをスローします。 DTDを解析するには、アプリケーションで認識エンジンを実装するか、XMLスキーマを使用する必要があります。
よく使用されるDTDは、通常
XmlPreloadedResolverを介して実行され
ます 。 このタイプは、Silverlight 3 SDKに含まれていますが、Community Technology Previewバージョンではサポートされていません。
次の違いもあります。
その他の違いAPIにはさらにいくつかの制限があります。
- GetHashCodeは、同じクラスの異なるメソッドに対して同じ値を返します。
- System.DateTime.Now.Millisecond.ToStringは、Windows Phoneエミュレーターで常にゼロを返します
- Decimal.Parseは、指数がゼロに近い場合、無効な10 進値を返します。 Windowsでは、メソッドはゼロを返します。 たとえば、値0E-50および10900E-512の場合、無効な10進値がゼロではなく返されます。
- GetHashCodeは、.NET Compact Frameworkの一部のユーザー宣言構造に対して0を返します。.NETFrameworkでは、ゼロ以外の値を返します。
例外一部のメソッドは、プラットフォームに応じて異なる例外をスローします。
- X509Certificateの作成時に無効なフラグを渡すと、 ArgumentExceptionの代わりにNotSupportedExeptionがスローされます。
- FTPでファイルにアクセスしようとすると、アプリケーションはNotSupportedExceptionではなくNullReferenceExeptionをスローします
- サポートされていない東アジア言語を使用しようとすると、アプリケーションはTypeInitializationExceptionではなくPlatformNotSupportedExceptionをスローします
- リソースファイルからサイズ0バイトのMemoryStreamを返そうとすると、 System.ArgumentNullExceptionがスローされます。 Windowsでは、例外は表示されません。
- カスタム読み取りクラスでラップすることにより、アプリケーションはXmlReaderSettingsのConformanceLevelがAutoに設定されていることを確認する必要があります。
- アプリケーションがMemoryStream型の変数にStream.Nullを保存しようとすると、 ArrayTypeMismatchExceptionが発生する
- リフレクションを使用して静的コンストラクターを呼び出すと、アプリケーションはMethodAccessExceptionではなくArgumentExceptionをスローします。
- Type.InvokeMember継承を介して基本クラスの整数フィールドに整数値を設定しようとすると、 ArgumentExceptionではなくMissingFieldExceptionがスローされます。
- .NET Compact Frameworkは、 Dictionaryからクラスを継承すると例外をスローします。keyパラメーターは列挙です。
- 一部のコンストラクター引数の属性とプロパティ値により、 Type.GetCustomAttributesが失敗する場合があります
- 仮想関数のグループデリゲートを検索すると、.NET Compact FrameworkではNullReferenceExceptionがスローされますが、.NET FrameworkではAccessViolationExceptionが発生します
- アプリケーションが存在しない型のメソッドを呼び出そうとするか、 あいまいな方法でメソッドを呼び出そうとすると、.NET Compact FrameworkはAmbiguousMatchExceptionをスローします。
- Path.GetDirectoryName(System.String)に間違ったパスを渡すと、メソッドは例外をスローしません。 たとえば、System.IO.Path.GetDirectoryName(@ "D:\ temp \。")は、例外ではなく「D:\ temp」を返します。
- Path.GetDirectoryName(System.String)は例外をスローしません。 パスの長さがシステムで許可されている最大長より長い場合。
- 不適切なカルチャをサテライトアセンブリAssembly.GetSatelliteAssembly(System.Globalization.CultureInfo)に渡すと、メソッドはWindowsでFileLoadExceptionをスローし、Windows PhoneでFileNotFoundExceptionをスローします
- ArgumentExceptionは、 タイプ 'System.ArgumentException'の例外ではなく、 引数例外メッセージを表示します。 同様に、ArithmeticExceptionは、Windowsのような文字列をスローする代わりにArithmetic Exceptionをスローします。
- ICollection.CopyTo(System.Array、System.Int32)は、 InvalidCastExceptionではなくArgumentExceptionをスローします
- FieldInfo.GetValue(System.Object)は、最初のパラメーターとしてnullが渡されるとArgumentNullExceptionをスローします。
- FieldInfo.Value(Object)は、ToString()の代わりにstringを使用して、オブジェクトの情報フィールドの値を文字列に変換するときにInvalidCastExceptionをスローします。
- System.ServiceModel.Channels.MessageHeaders.CopyHeaderFromは、 指定された引数が有効な値の範囲外であったメッセージを表示します。 この引数の値は0〜1の範囲内でなければなりません 。
- Array.SetValue(System.Object、System.Int32)に誤った値を渡すと、メソッドはArgumentExceptionではなくInvalidCaseExceptionをスローします。
- 渡された次元が配列のサイズに等しい場合、Array.GetLowerBound(System.Int32)はIndexOutOfRangeExceptionをスローしません。 代わりに、下限の値として0を返します。
- StreamWriterコンストラクターに間違ったパスを渡すと、 DirectoryNotFoundExceptionの代わりにInvalidArgumentExceptionがスローされます。
- System.Runtime.Serialization.DataContractSerializer.ReadObjectは、プライベートコンストラクターを持つIXmlSerializable型を逆シリアル化しようとすると、 SecurityExceptionではなくMethodAccessExceptionをスローします。
- MissingMethodExceptionに対して表示されるメッセージが正しくありません。
- デリゲートを非同期で呼び出そうとすると、アプリケーションはNotSupportedExceptionではなくTargetInvocationExceptionをスローします
- System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(System.IO.Stream)は、 MethodAccessExceptionが予期されるときにSecurityExceptionをスローします。
- System.Text.RegularExpressions.MatchCollection.CopyTo(System.Array、System.Int32)に間違った値を渡すと、メソッドはArgumentExceptionではなくPlatformNotSupportedExceptionをスローします
- nullオブジェクトをCreateInstanceに渡すと、メソッドはNotSupportedExceptionではなくNullReferenceExceptionをスローします
- System.Version.CompareToに文字列を渡すと、メソッドはArgumentExceptionではなくInvalidCastExceptionをスローします。
- 無効な引数でデリゲートを作成しようとすると、Delegate.CreateDelegateはMissingMethodExceptionをスローします。 Windowsでは、このメソッドは例外をスローしませんが、nullを返します。
- ByRef型に対してMakeByRefTypeメソッドが呼び出された場合、Type.MakeByRefTypeはTypeLoadExceptionをスローしません。
- DateTime.ParseExactメソッドは不正確な時間がかかることがあり、 FormatExceptionをスローしません。同時にWindowsではFormatExceptionを取得します
- 間違ったCompareOptionsオブジェクトを渡した場合、CompareInfo.Compare()は予想されるArgumentExceptionをスローしません。
- XmlReaderは、数字のオーバーフローが発生してもクラッシュしません。 代わりに、XmlReader.Valueで空の文字列を返します。
- Message.ToString()は、Windows Phoneでは動作が異なります。 Message.ToString()は、.NET Compact FrameworkでXMLバージョン情報を表示しません。
- 間違ったハンドラーを入力に渡しても、MethodBase.GetMethodFromHandleは例外をスローしません。 nullを返すだけです。
- 空の文字列を型名として渡すと、Module.GetTypeはArgumentExceptionをスローしません。 nullを返すだけです。
- Assembly.LoadFrom(String)は、アセンブリではないロードにファイルを渡そうとするとクラッシュします。 そのため、破損した画像の読み込みを防ぐために、メタデータの検証時に特別に設計されました。
- Type.GetPropertyは、提示されたパラメータータイプにnull要素が含まれている場合、 ArgumentNullExceptionではなくNullReferenceExceptionをスローします。
- Assembly.GetTypeは、文字列値がnullの場合、 System.ArgumentExceptionではなくSystem.TypeLoadExceptionをスローします。
- Type.GetConstructor(BindingFlags、Binder、Type []、ParameterModifier [])は、ParameterModifiersまたはnullが指定されていない場合、 ArgumentNullExceptionをスローします。
- 入力がスペースで始まる場合、Path.GetRootPathは空の文字列を返します。
- 最初のパラメーターにnullを渡すと、FieldInfo.SetValue()はTargetExceptionではなくArgumentNullExceptionをスローします。
- 最初のパラメーターにnullを渡すと、 EventInfo.AddEventHandlerはTargetExceptionではなくArgumentNullExceptionをスローします。
- EventInfo.AddEventHandlerは、イベントにパブリック追加アクセサーがない場合、 InvalidOperationExceptionではなくArgumentNullExceptionをスローします。
- 場合によっては、MethodBase.InvokeはTargetExceptionをスローしませんが、予期しない例外をスローする場合があります。
- 誤ったパラメーターをType.GetType(typeName、throwOnError)に渡すと、メソッドはArgumentExceptionではなく予期しない例外をスローします。
- 無効な値をPropertyInfo.GetValueに渡すと、メソッドはTargetExceptionではなくArgumentNullExceptionをスローします。
- インデクサーの数が実際の数より少ない場合、PropertyInfo.GetValueはTargetParameterCountExceptionではなくArgumentExceptionをスローします。
- assemblyFileパラメーターが有効なアセンブリでない場合、Assembly.LoadFrom(String)はBadImageFormatExceptionではなくSystem.IO.IOExceptionをスローします 。
- パブリック定数フィールドにFieldInfo.SetValue()を使用すると、メソッドはFieldAccessExceptionの代わりにSystem.MemberAccessExceptionをスローします。
- コンストラクターが宣言されていない型の場合、System.Activator.CreateInstance(Type、object [])はMissingMethodExceptionの代わりにMemberAccessExceptionをスローします。
- 無効なパラメーターをModule.ResolveMethodに渡すと、メソッドはArgumentOutofRangeExceptionではなくArgumentExceptionをスローします。
- Type.GetMethodsは、実行時に使用できないタイプがメソッドの1つに含まれている場合、InvalidProgramExceptionをスローします。
- 無効な文字列をAssembly.Load()に渡すと、 ArgumentExceptionではなくSystem.IO.IOExceptionがスローされます。
- 引数名にワイルドカード文字が含まれる場合、 Type.InvokeMemberはMissingFieldExceptionをスローします。
- ConstructorInfo.Invokeは、 引数の数が一致しない場合、 TargetParameterCountExceptionではなくArgumentExceptionをスローします。
- AssemblyName(文字列)コンストラクタに無効な文字列を渡すと、 IOExceptionではなくFileLoadExceptionがスローされます。
- Assembly.GetType(文字列名)に無効な名前を渡すと、メソッドはArgumentExceptionをスローしませんが、nullを返します。
- CultureInfo( "fr")。NumberFormat.CurrencySymbolを "USD"に設定すると、 NotSupportedExceptionが発生します。
- Decimal.Parse(String形式、intスタイル)は、Windowsで0の無限値を返し、Windows PhoneではOverlowExceptionを受け取ります。
- Decimal.Parse(String、NumberStyles)は、サポートされている値よりも大きな値が渡されるとOverflowExceptionをスローします。 この場合も、Windowsで例外は発生しません。
- パブリックジェネリック型がサポートされていないため、Dictionary <TKey、TValue>から継承した型を含む内部型をシリアル化しようとすると、DCS.WriteObject()がクラッシュします。
- XmlException.LineNumberおよびXmlException.LinePositionの値は、XmlExceptionに正しく返されません。
- MethodInfoオブジェクトのReturnParameterプロパティを使用して型を取得すると、NotSupportedExceptionが発生します。
- System.String.IndexOfAnyに誤ったパラメーターを渡すと、メソッドはArgumentNullExceptionではなくArgumentOutOfRangeExceptionをスローします
- CultureInfo(文字列)コンストラクターは、サポートされていないカルチャに対してArgumentExceptionではなくPlatformNotSupportedExceptionをスローします。