이라는 생성자가있는 MyValue
클래스가 있다고 가정 해 보겠습니다. 그것은 일반적인 목적의 클래스이며, 나는 그것의 생성자에 int
값을 넣을 수 있습니다. 그러나 때로는 더 많은 제약이있는이 클래스를 사용해야합니다. 예를 들어 사용자가 양수 값만 입력하도록 강제해야합니다. MyValue
에서 상속받은 새로운 클래스를 만들 수 있지만 구조체에서는 불가능합니다.생성 제한이있는 사용자 정의 클래스
아마 속성을 사용하여이 동작을 수행 할 수 있습니까?
// pseudo code
[Constraint(Min=0)]
public MyValue MyProperty { get; set; }
그리고 MyProperty 어떻게 든이 속성을 읽고, 유효한 값을 확인하는 생성자에서이 제약 조건을 사용할 수 있습니다. 그러나 나는 그것이 불가능하다고 생각한다.
비슷한 문제를 해결하기위한 조언을 해 줄 수 있습니까?
편집 : PostSharp에서이 기능을 사용하는 것처럼 보입니다. http://www.postsharp.net/model/code-contracts 속성은 [EmailAddress]와 같은 속성으로 꾸며졌으며 입력 값을 확인하는 설정기에 생각하는 IL 코드를 삽입합니다. 처음부터 구현하기가 어렵습니까?
생성자 만 체크인 하시겠습니까? –
어디서든 상관 없습니다. 하나의 클래스를 만들고 코드에 제약 조건을 쉽게 추가해야합니다. – zgnilec
"중요하지 않습니다"는 항상 가장 어려운 요구 사항입니다. –