現在我決定創建我自己的屬性,它將顯示名稱作爲參數。我有一種方法來禁用緩存。
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謝謝你,自定義屬性確實做了這項工作。 –