2
我有一个基于MVVM松散的Winforms项目。安全性是由域层实现使用下的PrincipalPermissionAttribute,像这样:你可以在运行时评估一个方法的属性吗?
Public Class Order
<PrincipalPermissionAttribute(SecurityAction.Demand, Role:="Managers")> _
Public Sub ChangeBillingAddress(NewAddress as Address)
Me.BillingAddress = NewAddress
End Sub
End Class
我想为我的ViewModel要能够指导上,其基于下的PrincipalPermissionAttribute域中启用/禁用的观点:
Public Class OrderViewModel
Private _Order as Order
Public Sub New(Order as Order)
_Order = Order
End Sub
Public Readonly Property ChangeBillingAddressEnabled as Boolean
Get
'Here I want to take Thread.CurrentPrincipal and evaluate
'it's Role against the PrincipalPermissionAttribute on
'_Order.ChangeBillingAddress. If the user will succeed
'in changing the billing address return True, else return False.
End Get
End Property
End Class
是有办法的视图模型来评估下的PrincipalPermissionAttribute并确定当前Thread.Principal会成功吗?
伟大的解决方案。相对而言,你觉得这种反射电话有多贵? – 2011-05-17 23:58:29
我不太确定 - 我只是知道,如果可以的话,常见建议是始终缓存反射数据。我想这取决于你打算多久打一次电话......但是,我认为你会将你的UI绑定到这个“_Action_Enabled”值,这意味着它可能会被调用的方式超出你的预期,所以你可能会以及缓存它(一个静态的懒加载属性应该足够了)。 – Reddog 2011-05-18 18:10:45