访问全球 Silverlight 应用程序数据的最佳实践

Best practice for accessing global Silverlight application data

我在网站上托管了一堆 Silverlight 5 应用程序,这些应用程序设置了一些特定于应用程序的数据。这些数据之一是 CurrentUser 对象。

在启动应用程序(每个应用程序)时,它会与 Web 服务对话以获取当前用户信息。但是,这需要从 SL 应用程序中的各种位置访问。

我认为将它放在 Application 对象本身上是有意义的,但我不确定这是否是一个好的做法。

我在界面中放置了一个包含用户的简单 属性,并在主应用程序 class 上实现了它。

然后,应用程序代码的其余部分通过静态 class:

访问它
Public Module ApplicationUtils

    Public Property CurrentUser() As ConnectEntities.WebUser
        Get
            Dim app As ICommonAppData = TryCast(Application.Current, ICommonAppData)
            If (app IsNot Nothing) Then
                Return app.CurrentUser
            End If
            Return Nothing
        End Get
        Set(value As ConnectEntities.WebUser)
            Dim app As ICommonAppData = TryCast(Application.Current, ICommonAppData)
            If (app IsNot Nothing) Then
                app.CurrentUser = value
            End If

            Throw New NotImplementedException("Current application does not implement required interface")
        End Set
    End Property

End Module

我对 Silverlight 不是很熟悉,所以我想知道这是否是访问全局数据的公认做法,或者是否存在我在这里没有意识到的并发症(线程安全问题,等)。

我找不到任何地方提到需要提升权限才能访问 Application.Current 属性 的任何细节。同样,在我的所有测试中,似乎我能够根据需要访问此 属性 而无需提升权限(本地测试以及部署在其他机器上的应用程序)。

我已经推进了我最初的设计,一切似乎都运行良好。

我不知道这是否是最佳做法。但是,这似乎是访问此类数据的一个相当干净的解决方案。