【发布时间】:2012-03-08 23:13:01
【问题描述】:
我在 Windows Phone 7 中工作,但我想问题可能是 Silverlight(虽然不是 .NET,因为 ISerializable 在 Windows Phone 中不存在 suggested in this answer)。
我有许多在运行时创建的对象。除了少数属性外,它们几乎总是相同的。
所以我会有一个对象:
Public Class Article
Public Property Title As String
Public Property Author As String
Public Property HasBeenViewed As Boolean
Public Property DateViewed As Date
Public Property IsPriorityArticle As Boolean
End Class
我希望能够这样写:
<DataContract()>
Public Class Article
<IgnoreDataMember()> _
Public Property Title As String
<IgnoreDataMember()> _
Public Property Author As String
<DataMember()> _
Public Property HasBeenViewed As Boolean
<DataMember()> _
Public Property DateViewed As Date
<DataMember()> _
Public Property IsPriorityArticle As Boolean
End Class
我有很多文章对象要在启动时加载。注意:在启动时加载的文章是 only 文章 - 从来没有任何新文章或任何文章被删除。 Article 对象中唯一更改的内容是 IsPriorityArticle、HasBeenViewed 和 DateViewed。其余部分是静态的。
我将这些文章加载到List(Of Article) 中,这将成为我用于绑定的数据源。当用户查看文章时,它会记录上次查看的时间和日期。 IsPriorityArticle 可能具有可由用户更改的真或假值 - 最终用户可以标记它是否被视为重要文章(在这种情况下,它将显示在优先文章的另一页中)或将其取消标记为错误的。如果是这样,则该新值需要在会话之间保持不变。
我有大约 250 篇文章。我在启动时创建了这些(同样,永远不会有更多或更少的文章)。
初始化值示例:
Public Shared Property MyArticles As IEnumerable(Of Article)
Private Sub Application_Launching(ByVal sender As Object, ByVal e As LaunchingEventArgs)
Dim listOfArticles As New List(Of Article)
With listOfArticles
.Add(New Article With {.Title = "The Internet", .Author = "John", _
.IsPriorityArticle = False})
.Add(New Article With {.Title = "The World", .Author = "Jim", _
.IsPriorityArticle = False})
.Add(New Article With {.Title = "The Universe", .Author = "John", _
.IsPriorityArticle = True})
.Add(New Article With {.Title = "The Atom", .Author = "Jim", _
.IsPriorityArticle = True})
End With
MyArticles = listOfArticles
End Sub
(顺便说一句,我知道我不再需要换行符了,但是没有它,这个网站不会格式化代码)
注意最后两个 - 他们有.IsPriorityArticle = True。这是应用程序首次启动时的初始化值 - 如果用户从不更改它,它将始终为 .IsPriorityArticle = True,但如果他们将其更改为 False,则该值应在 IsolatedStorage 中持续到下一个会话。
所以我一直在玩弄试图让它正确序列化并且无法得到任何工作。我不知道如何只从 IsoStore 加载 <DataMember> 属性而不是其余的。
有谁知道如何做到这一点,以便我的MyArticles As IEnumerable(Of Article) 将使用我的初始化值,然后检查任何需要更新的<DataMember> 属性?
还是我走错了路?
【问题讨论】:
标签: silverlight windows-phone-7 serialization