2009-03-24 14 views
3

オブジェクトのリストを含むインターフェイスクラスを実装しようとしています。実装クラスがリストのタイプを定義するように、リストを汎用的にするにはどうすればいいですか?インターフェイス内の一般的なリスト

public interface IEntity 
{ 
    Guid EntityID { get; set; } 
    Guid ParentEntityID{ get; set; } 
    Guid RoleId { get; set; } 

    void SetFromEntity(); 
    void Save(); 
    bool Validate(); 
    IQueryable<T> GetAll(); // That is what I would like to do 
    List<Guid> Search(string searchQuery); 
} 
public class Dealer : IEntity 
{ 
    public IQueryable<Dealer> GetAll() { } 
} 

答えて

11

あなたはこのような何か行うことができます:あなたのドメインオブジェクトにSave()Validate()を追加

public interface IEntity<T> 
{ 
    IQueryable<T> GetAll(); 
} 

public class Dealer : IEntity<Dealer> 
{ 
    public IQueryable<Dealer> GetAll() { } 
} 
3

IEntityジェネリック自体を作成するだけです。 GetAll()の定義でtypeパラメータを使用します。

ここでは、あなたのコードを変更したい方法は次のとおりです。

public interface IEntity<TListItemType> 
{ 
    // stuff snipped 

    IQueryable<TListItemType> GetAll(); 
} 

public class Dealer : IEntity<Dealer> 
{ 
    public IQueryable<Dealer> GetAll() { // some impl here } 
} 
1

などのロジックを(何でありますDealer)は、SRPに違反しているため、世界でも最高のアイデアではありません。

関連する問題