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; 
    } 

호기심 :


나는 좋은를 추측입니다. 예외는 일반적으로 현지화되어서는 안됩니다.

관련 문제