2012-04-19 8 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; } 
} 

を、私は、インターフェース/クラスが必要私はSqlBrowseBoysとSqlBrowseGirlsの両方を取ることができる[INTERFACE]というラベルの位置にあるため、複数の場所でBrowseViewModelを使用することができます。

私の脳が今では結び目で結ばれているように誰かが私にどのように見せてもらえればそれは大好きです。私はこれがクラスにいくつかの変更を必要とすると思われますが、それは問題ありませんが、私は現在、それがどうなるかという手がかりはありません。

多くの方々に感謝します。

+1

Eric Lippertは、Curiously Recurring Template Pattern [ここ](http://blogs.msdn.com/b/ericlippert/archive/2011/02/03/curiouser-and-curiouser.aspx)について投稿しました。役に立った –

+0

はい、ここでパターンの名前とそれについてREを検索した後、REのコードを学んだのですが、それは私の現在の問題を解決するものではありません。しかし、ありがとう。 – Bobbler

答えて

3

SqlBrowse<T>は非ジェネリックSqlBrowseインタフェース(または抽象クラス)を実装し、それは私たちがその定義を持っていないので、それはあなたのクラスにすることを必要とする変更内容を伝えるのは難しいです

public SqlBrowse People { get; set; } 

を書き込みしています。

+0

私は、SqlBrowseBoysとSqlBrowseGirlsが新しいインターフェイスを実装し、次に解決した別のノックオンエフェクト、次に別のものを実装すると主張します。多くのコードを投稿することなくすべてを記述することは難しいです。その他の提案はありますか?あなたが を書かれているはずです "クラスSqlBrowse を閲覧、SqlBrowseはT:} {を参照" あなたは "を、SqlBrowse {}ブラウズ:Tはを閲覧クラスSqlBrowse " を書いたので、それ@マーク – Bobbler

+1

はおそらくです – Asik

+0

はい、私はしました!ありがとう。私はまだノックオン効果がありますが、それほど多くはありません。 – Bobbler