2012-04-19 4 views
3

나는 다음과 같은 클래스가 :상속과 MVC 프로젝트에서 '호기심 반복 템플릿 패턴'

public abstract class Browse<T> where T : Browse<T> 

public abstract class SqlBrowse<T> : Browse<T> where T : Browse<T> 

public class SqlBrowseBoys : SqlBrowse<SqlBrowseBoys> 
public class SqlBrowseGirls : SqlBrowse<SqlBrowseGirls> 

다음 뷰 모델

public class BrowseViewModel 
{ 
    public [INTERFACE] People { get; set; } 
} 

을하지만 난에 인터페이스/클래스가 필요 여러 위치에서 BrowseViewModel을 사용할 수 있도록 SqlBrowseBoys과 SqlBrowseGirls를 모두 취할 수있는 [INTERFACE] 레이블이 붙은 위치.

내 뇌가 지금 매듭으로 묶여있는 것처럼 누군가가 나를 보여줄 수 있다면 나는 그것을 좋아할 것입니다. 나는 이것이 수업에 약간의 변화 (들)을 요구할 것 같지만 괜찮다. 그러나 나는 그것이 무엇이 될지 전혀 모른다.

많은 분들께 감사드립니다.

+1

Eric Lippert는 [Curiously Recurring Template Pattern [여기]] (http://blogs.msdn.com/b/ericlippert/archive/2011/02/03/curiouser-and-curiouser.aspx)에 대해 게시했습니다. 도움이됩니다. –

+0

그렇습니다. 위의 코드를 RE에서 검색 한 후에 패턴의 이름과 그 이름을 배웠습니다.하지만 현재의 문제는 도움이되지 않습니다. 그래도 고마워. – Bobbler

답변

3

SqlBrowse<T>는 제네릭이 아닌 SqlBrowse 인터페이스 (또는 추상 클래스)를 구현하고 그것은 우리가 그 정의가 없기 때문에 그 수업에 수반됩니다 어떤 변화가 말해 어렵다

public SqlBrowse People { get; set; } 

을 적게한다.

+0

내가 할 때 그것은 SqlBrowseBoys 및 SqlBrowseGirls 또한 새로운 인터페이스를 구현하고 다음에 또 다른 노크 - 온 효과를, 다른 것은 해결할 것을 주장한다. 많은 코드를 게시하지 않고 모두를 기술하기는 어렵다. 다른 제안? "T 어디 보기 : 를 찾아 SqlBrowse는 {} 클래스 SqlBrowse " 당신이 작성해야 할 때 을 쓴 때문 @ 마크 – Bobbler

+1

은 아마 "클래스 SqlBrowse 을 : 를 찾아 SqlBrowse 어디 T :} { 찾아보기" – Asik

+0

예, 했어요! 감사. 나는 여전히 노크 효과를 가지고 있지만, 많은 양을 다루지는 못합니다. – Bobbler