2009-06-12 3 views
0

は、私はバリデータは、いくつかのサフィックス(RequiredError、MaxLengthExceededError、InvalidError、FormatError)、Oxiteのソースコードを読むなど

validationState.Errors.Add(CreateValidationError(user.Name, "Name.RequiredError", "Name is not set")); 

validationState.Errors.Add(CreateValidationError(user.Name, "Name.MaxLengthExceededError", "Username must be less than or equal to {0} characters long.", 256)); 

validationState.Errors.Add(CreateValidationError(user.Email, "Email.InvalidError", "Email is invalid.")); 

と悪いプロパティ名を保存することを発見しましたその接尾辞の目的は何ですか?彼らはどのように使った?

答えて

1

私は、エラーを一意に識別するために使用できる機械的な定数で、グローバル化されたサイトのローカライズされたリソースを取得するために使用できると考えています。


私は良い推測です:

protected ValidationError CreateValidationError(
     object value, string validationKey, string validationMessage, 
     params object[] validationMessageParameters) 
    { 
     if (validationMessageParameters != null && 
      validationMessageParameters.Length > 0) 
     { 
      validationMessage = string.Format(
       validationMessage, validationMessageParameters); 
     } 

     return new ValidationError(
      validationKey, 
      value, 
      new InvalidOperationException(
       localize(validationKey, validationMessage)) 
      ); 
    } 

    private string localize(string key, string defaultValue) 
    { 
     if (phrases == null) 
      phrases = localizationService.GetTranslations(); 

     Phrase foundPhrase = phrases 
      .Where(p => p.Key == key && p.Language == site.LanguageDefault) 
      .FirstOrDefault(); 

     if (foundPhrase != null) 
      return foundPhrase.Value; 

     return defaultValue; 
    } 

しかし、好奇心が強いです。例外は一般的にローカライズされるべきではないためです。

関連する問題