2009-08-17 8 views
0

현재 응용 프로그램의 사용자 지정 필드 개체의 유효성을 검사해야합니다. 간단히 말해, 각 Field 객체는 필드의 유효성 검사와 필드 값에 대한 정보로 구성됩니다. 필드를 대량으로 유효성을 검사하고 있으므로 현재 각 유효성 검사에 대한 메서드가있는 유효성 검사 클래스가 있습니다. C# 사용자 지정 개체 유효성 검사 디자인

 private void RequiredFields() 
     { 
      foreach (Field field in allFields) 
      { 
       if ((field.Required == true) && (field.Value == string.Empty)) 
       { 
        field.isValid = false; 
       } 
      } 
     } 

지금 내 문제는 내가이 검증에 추상화 계층, 그래서 대신 말을해야 같은 느낌이다 : 필수 필드를 들어, 다음과 같이 보입니다

if ((field.Required == true) && (field.Value == string.Empty)) 

... 나는 값을 적용하고이로 그것을 돌, 검증 클래스를 추가합니다 :

if (!validater.RequiredFields(field.Required, field.Value)) 

나는이 작업을 수행하는 경우 나 필드 개체를 사용하지 않고 검증 클래스를 재사용 할 수있는 것, 그것은 것 또한 더 나은 단위 테스트를 가능하게합니다 ... 그러나 추상화의 불필요한 계층이자 다소 반복적 인 것처럼 보입니다 ... 이것은 모든 유효성 검사 중에서 가장 간단하다는 것을 명심하십시오.

제안 사항?

답변

2

왜 Field 객체가 자체 유효성 검사를 수행하지 않아도 되나요?

class Field 
{ 
    public bool Required { get; } 
    public string Value { get; set; } 

    // assuming that this method is virtual here 
    // if different Fields have different validation logic 
    // they should probably be separate classes anyhow and 
    // simply implement a common interface of inherit from a common base class. 
    public override bool IsValid 
    { 
     get { return Required && Value != String.Empty; } 
    } 
} 
+0

필자는이 두 번째지만 필자는 항상 쓸모가없는 필드를 만드는 것을 주저합니다. –

+0

글쎄, 나는 이것을 고려했다. 그러나, 나는 대략 100 개의 필드를 검증하고 있는데, 모두 다른 유효성 검사가 있으며, 일부는 Field Object에만 해당됩니다. 나는 함께 유효성 확인을하고 싶다. – Jeff

+0

100 개의 필드를 검증하는 경우 모두 다른 검증 로직이 필요하며 그 중 일부만 사용자 정의 클래스입니다. 그러면 설계상의 결함이 더 깊다고 말할 수 있습니다. –

관련 문제