2016-09-03 1 views
2

을 유추하는 사용자 지정 DisplayAttribute 만들기 nameof() 키워드를 사용하여 C# 6에서 지역화를 사용하는 형식 안전 Display 속성을 만들 수 있습니다. 결과이 같은 것ResourceType

(또한 DisplayName attribute from Resources? 참조)

[Display(NameRes = Localization.Account.MinPasswordLength), ResourceType = typeof(Localization.Account))] 
    public int MinPasswordLength { get; set; } 

하지만, 수십 개의 속성이를 입력 한 후, 나는 느낌이 더 쉬운 방법이있을 수. 매번 동일한 정보를 두 번 (거의) 입력하고 있습니다.

내 질문은 : 이름 정보에서 ResourceType을 유추하는 사용자 지정 DisplayName 특성을 어떻게 만듭니 까?

[Display(NameResource = Localization.Account.MinPasswordLength)] 
    public int MinPasswordLength { get; set; } 

이 가능하다면 어떤 생각 : 코드는 다음과 같이 보일 것이다

? 그리고 만약 그렇다면 : 어떻게?

+0

당신은 당신이 그것에서 상속 할 수 없음을 의미 sealed'는'임을 알 수 DisplayAttribute' 클래스 '의 정의를 확인하세요. 한 가지 방법은 리소스 파일에서 정보를 읽을 수있는 사용자 정의 DisplayNameAttribute를 만드는 것입니다. –

+0

예, 클래스가 봉인되었습니다. 그것은 불행한 일입니다 만, 어쩌면 확장 기능으로 완성 될 수 있습니까? – Frank

답변

0

방금 ​​정의한 다른 속성을 자원 유형으로 정의 할 수 있습니다.

이 속성을 클래스 정의에 넣습니다. 그리고 리소스 검색 중에 유형 호스트를 검사하여 리소스 유형을 결정합니다.

예 :

[DisplayResourceHost(typeof(Localization.Account))] 
public class ViewModel 
{ 
    [Display(NameResource = Localization.Account.MinPasswordLength)] 
    public int MinPasswordLength { get; set; } 
} 
관련 문제