내 엔터티에서 유효성 검사를 수행하기 위해 Microsoft 엔터프라이즈 유효성 검사 메서드를 사용하려고합니다.기본 클래스에서 하위 클래스 유형 검색 중?
public class BaseEntity
{
public bool IsValid()
{
return Validate().IsValid;
}
public ValidationResults Validate()
{
return Validation.Validate<this.GetType()>(this);
}
이의 문제가 BaseEntity의 서브 클래스는 IsValid, this.GetType를 호출하는 경우에도()는 항상 BaseEntity이 아닌 서브 클래스의 형식을 반환하는 것입니다 : 내 기본 클래스에서 나는 다음과 같은 방법이있다. 나는 모든 엔티티에 대해이 코드를 다시 작성해야하는 것을 원하지 않는다. 이것을 할 수있는 다른 방법이 있습니까?
보호 된 변수가 Type _validationType으로 보호되어 있고 모든 엔터티에서 해당 엔터티의 .GetType 값으로 설정하겠다는 생각이 들었지만 더 나은 방법이 있어야합니다.
업데이트
명백히 신경 쓰지 마라. 이 .GetType()이 내가 원하는대로 작동하는 것 같습니다. 왜 그것이 전에 없었는지 모르겠습니다.
very un-OO like
return ValidationFactory.CreateValidator(this.GetType()).Validate(this);
실제로이를 좋아한다.원래 엔티티 자체에 유효성 검사를 넣는 것을 좋아하지 않았지만 알아낼 수있는 유일한 해결책은 내 nhibernate 클래스와 엔터티 사이에 매우 얇은 레이어를 만드는 것이 었습니다. 이것은 실제로 많은 문제점을 해결합니다. 특히이 게시물로 인해 발견 한 nhibernate 유효성 검사 도구에 대해 사용하면 더욱 그렇습니다. 감사! – KallDrexx
@KallDrexx : 네가 좋아하는 것을 기쁘게 생각한다. 나는 Hibernate에서 어떻게 작동하는지 결코 테스트하지 않았다. 그래서 이것의 예제는 환영 받는다. – Steven
나는 대부분 nhibernate 유효성 검사 라이브러리를 사용하고 추상화 계층으로 xval을 사용하는 예제를 보았습니다. 나는 예제를 열심히 본적이 없다. 우선 xval을 내 애플리케이션에 구현하는 것을 살펴보고, 거기에서 nhibernate를 연결하는 방법을 살펴볼 것이다. (내가 보는 모든 것은 유효성 검증 라이브러리에 핸들러를 ISession에 연결). – KallDrexx