【发布时间】:2015-03-16 12:59:08
【问题描述】:
我在一个网站上托管了一堆 Silverlight 5 应用程序,这些应用程序设置了一些特定于应用程序的数据。这些数据之一是 CurrentUser 对象。
在应用程序(每个)启动时,它会与网络服务对话以获取当前用户信息。但是,这需要从 SL 应用程序中的各种位置进行访问。
我认为将它放在 Application 对象本身上是有意义的,但我不确定这是否是一个好习惯。
我将一个包含用户的简单属性放在一个接口中,并在主应用程序类上实现它。
然后,应用程序的其余代码通过静态类访问它:
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 不是很熟悉,所以我想知道这是否是一种公认的访问全局数据的做法,或者是否存在我在这里没有意识到的复杂情况(线程安全问题等)。 )。
【问题讨论】:
-
@chris for
Application.Current要工作,您需要以提升的 SL 权限工作。 -
@user2526236,很有趣。现在超出我的知识深度。谷歌搜索表明我们需要一个签名的 XAP 和一个注册表设置。签署 xap 很容易,但是如果有的话,如何通过 SL5 应用程序在其他人的计算机上设置注册表设置?另外,我如何判断它是否已经运行受信任? (它是一个遗留应用程序)我相信选中项目属性上的复选框只能使其用于本地测试。
-
@chris 请参考这个 MSDN 文档。我们有一个 exe 供客户端安装以更改 reg 值 ..msdn.microsoft.com/en-us/library/…
-
@user2526236 谢谢,我会看看,但我不认为单独的 exe 是一个选项。回到最初的问题,这真的是在 Silverlight 中访问/存储这些信息的正确方法,还是有更合适和更简单的方法来处理它?
-
@user2526236 哪里提到我需要提升权限才能使用 Application.Current?我可以在我拥有的这个现有应用程序中看到一堆访问 Application.Current 属性(如 Resources 和 RootVisual)的地方,但我不相信它具有提升的权限。只是想找到关于这个的权威词。
标签: vb.net silverlight