2

WCF サービスを呼び出してサーバーからタイム ゾーンのリストを取得する Silverlight アプリがあります。すべてのタイム ゾーンはサーバー上の関数で取得されますが、これらを Silverlight に戻す方法を知る必要があります。

サーバーでの呼び出しは以下のとおりですが、戻す前に TimeZoneInfo を Know Type としてシリアル化する必要があると思います。これが私が立ち往生しているポイントです。

誰かがこれについて助けてくれますか?

Public Function GetTimezones() As ReadOnlyCollection(Of TimeZoneInfo) Implements ITimezoneService.GetTimezones

   Dim timeZones As ReadOnlyCollection(Of TimeZoneInfo) = TimeZoneInfo.GetSystemTimeZones()

   Return timeZones

End Function 
4

1 に答える 1

2

シリアル化を許可するために追加する既知の型のリストについては、http://social.msdn.microsoft.com/Forums/en/wcf/thread/f164f185-ae18-4775-a2ff-a814813d262dを参照してくださいTimeZoneInfo

これは完全なフレームワークで機能しますが、あまりお勧めしません。むしろ、ID またはc# TimeZoneInfo serializationで提案されている組み込みの文字列シリアル化を使用します。

反対に、Silverlight フレームワークには の独自の軽量バージョンがあるため、完全なフレームワークによってシリアル化されたTimeZoneInfoものを逆シリアル化することはできませんTimeZoneInfo(同じ型定義ではないため)。

また、既定のセキュリティ パラメーターでは、Silverlight は (Silverlight クライアントが実行しているコンピューターのロケール) TimeZoneInfo にしかアクセスできず、他のタイム ゾーンを使用するには、昇格された特権で Silverlight を実行する必要があることに注意してUTCくださいLocal。これは、タイムゾーン情報がレジストリ ベースであるためです。Silverlight のタイム ゾーン変換http://forums.silverlight.net/t/186363.aspx/1を参照してください。

最終的に、独自の Silverlight アプリケーションで TimeZoneInfo クラスの全体または一部を書き直した人もいました (私たちもそうしなければなりませんでした)。http://forums.silverlight.net/t/165067.aspx/1を参照してください。Silverlight は、ローカルから UTC へ、または UTC からローカル タイム ゾーンへの変換以上のものをネイティブにサポートしていません。

于 2012-09-24T11:46:23.200 に答える