现在我决定创建我自己的属性,它将显示名称作为参数。我有一种方法来禁用缓存。
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过度优化性能的情况,应该每次都重新评估属性。 –
https://github.com/MarimerLLC/csla/issues/344 –
@RockfordLhotka谢谢你,自定义属性确实做了这项工作。 –