2016-08-30 2 views
0

편집 : 참조 된 복제본은 5 년 전 (그리고 6 년전 참조) 답변을 얻었으므로 옵션이 아니며 오히려 더 최근의 것이 있었으면합니다. 코드를 중심으로 한 수공 작업보다. 또한 참조 된 복제본은 완전한 선언적 솔루션이 아닙니다.문자열 속성의 길이를 제어하는 ​​우아한 방법

클래스에서 최대 길이 만 허용되는 여러 문자열 속성이 있습니다. 델파이 배경에서 오는 당신은 사용자 정의 유형을 정의 할 수 있었다 :

type TString10 = string[10]; 
type TString50 = string[50]; 

다음 속성 정의의 일부로 것을 사용

property TString10 MyString 
property TString10 MyOtherString 
property TString50 YetOtherString 
property TString50 AndTheLastOne 

나는 알고있다 no declarative equivalent in C#을있을 나타납니다 ?

  1. 은 (지정된 길이로 절단) 수동 속성 세터 또는 게터
  2. 전화
을 필요에 따라 자신의 길이를 확인하기 위해 속성을 확인하는 검증 방법을 쓰기 : 그래서 내 유일한 옵션이 나타납니다

또는 문자열 속성에 선언적으로 길이를 적용하는 다른 방법이 있습니까?

답변

1

옵션 1 & 2 꽤 많이 다루고 있습니다. 그들은 내가 사용했던 유일한 두 사람입니다.

필자가 해본 가장 멋진 방법은 속성을 장식하는 데 사용할 수있는 특성을 만든 다음 문자열 길이를 실제 값과 비교하는 Validation 메서드를 만드는 것입니다. 클래스는 자체적으로 유효성을 검사 할 수 있으므로 모든 것이 클래스 자체 내에 캡슐화되었습니다.

또한 자동 속성을 계속 사용할 수 있음을 의미합니다.

관련 문제