2

我有一个 Silverlight 应用程序,它调用我的 WCF 服务以从服务器获取时区列表。所有时区都在服务器上的函数中检索,但我需要知道如何将这些传递回 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 只能访问UTCLocal(Silverlight 客户端运行机器区域设置)TimeZoneInfo,并且要使用其他时区,您需要以提升的权限运行 Silverlight,因为时区信息是基于注册表的。请参阅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 回答