RegisterProperty 缓存显示名称
RegisterProperty cache display name
我正在使用 CSLA 的 RegisterProperty。我在附加到资源的属性上也有 DisplayAttribute 和 DisplayNameAttribute。我注意到我的每个 RegisterProperty 的 .Name 属性 都被缓存了。如果我切换语言,.Name 不会刷新。这会导致麻烦,因为我正在使用 StringLengthAttribute 和其他人来处理一些业务规则。
有没有办法刷新 .Name 或确保该值未被缓存?
现在我决定创建自己的属性,将显示名称作为参数。我发现有一种方法可以禁用缓存。
Public Class StringLengthExAttribute
Inherits StringLengthAttribute
Private _displayResourceName As String = ""
Public Sub New(ByVal maximumLength As Integer)
MyBase.New(maximumLength)
Me.ErrorMessageResourceName = "ruleExceedMaxCharacter"
Me.ErrorMessageResourceType = GetType(My.Resources)
End Sub
Public Sub New(ByVal displayResourceName As String, ByVal maximumLength As Integer)
MyBase.New(maximumLength)
_displayResourceName = displayResourceName
Me.ErrorMessageResourceName = "ruleExceedMaxCharacter"
Me.ErrorMessageResourceType = GetType(My.Resources)
End Sub
Public Overrides Function FormatErrorMessage(name As String) As String
If _displayResourceName <> "" Then
name = My.Resources.ResourceManager.GetString(_displayResourceName)
End If
Return MyBase.FormatErrorMessage(name)
End Function
End Class
我正在使用 CSLA 的 RegisterProperty。我在附加到资源的属性上也有 DisplayAttribute 和 DisplayNameAttribute。我注意到我的每个 RegisterProperty 的 .Name 属性 都被缓存了。如果我切换语言,.Name 不会刷新。这会导致麻烦,因为我正在使用 StringLengthAttribute 和其他人来处理一些业务规则。
有没有办法刷新 .Name 或确保该值未被缓存?
现在我决定创建自己的属性,将显示名称作为参数。我发现有一种方法可以禁用缓存。
Public Class StringLengthExAttribute
Inherits StringLengthAttribute
Private _displayResourceName As String = ""
Public Sub New(ByVal maximumLength As Integer)
MyBase.New(maximumLength)
Me.ErrorMessageResourceName = "ruleExceedMaxCharacter"
Me.ErrorMessageResourceType = GetType(My.Resources)
End Sub
Public Sub New(ByVal displayResourceName As String, ByVal maximumLength As Integer)
MyBase.New(maximumLength)
_displayResourceName = displayResourceName
Me.ErrorMessageResourceName = "ruleExceedMaxCharacter"
Me.ErrorMessageResourceType = GetType(My.Resources)
End Sub
Public Overrides Function FormatErrorMessage(name As String) As String
If _displayResourceName <> "" Then
name = My.Resources.ResourceManager.GetString(_displayResourceName)
End If
Return MyBase.FormatErrorMessage(name)
End Function
End Class