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