문제

Oxite 소스 코드를 읽으면 유효성 검사기가 접미사 (Emergror, MaxLengthexeceedError, InvalidError, Formaterror)와 함께 잘못된 속성 이름을 저장한다는 것을 알았습니다.

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."));

누가 접미사의 목적은 무엇입니까? 그들이 어떻게 사용 했습니까?

도움이 되었습니까?

해결책

내 생각에 그들은 오류를 고유하게 식별하는 데 사용될 수 있으며 세계화 된 사이트의 현지 리소스를 가져 오는 데 사용될 수있는 일정하고 기계 친화적 인 값이 일정하다고 생각합니다.


나는 좋은 추측 자입니다 :

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

그래도 호기심. 예외는 일반적으로 현지화되어서는 안됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top