2012-08-09 26 views
0

任何人都可以提出一种方法来通用以下接口,所以我可以有一个单一的接口,而不是每个存储库一个接口。Genericising存储库接口

public interface IClass1Repository 
{ 
    Class1 NewEntity(); 
    Class1 AddOrUpdate(Class1 entity); 
    Class1 GetById(int Id); 
    Class1 GetByNavigation(string NavigationString); 
    IQueryable<Class1> All(); 
} 

public interface IClass2Repository 
{ 
    Class2 NewEntity(); 
    Class2 AddOrUpdate(Class2 entity); 
    Class2 GetById(int Id); 
    Class2 GetByNavigation(string NavigationString); 
    IQueryable<Class2> All(); 
} 

public interface IClass3Repository 
{ 
    Class3 NewEntity(); 
    Class3 AddOrUpdate(Class3 entity); 
    Class3 GetById(int Id); 
    Class3 GetByNavigation(string NavigationString); 
    IQueryable<Class3> All(); 
} 


public interface IClass4Repository 
{ 
    Class4 NewEntity(); 
    Class4 AddOrUpdate(Class4 entity); 
    Class4 GetById(int Id); 
    Class4 GetByNavigation(string NavigationString); 
    IQueryable<Class4> All(); 
} 
+0

你自己尝试什么吗? – 2012-08-09 10:54:34

+0

“Genericising”..爱它:D – 2012-08-09 10:54:43

+0

@DanPuzey - 我做了,我基本上寻找其他人的方法。 – Moo 2012-08-09 10:55:50

回答

3

试试这个:

public interface IRepository<T> 
{ 
    T NewEntity(); 
    T AddOrUpdate(T entity); 
    T GetById(int Id); 
    T GetByNavigation(string NavigationString); 
    IQueryable<T> All(); 
} 
0

会是这样做的:

public interface IRepository<T> 
{ 
    T NewEntity(); 
    T AddOrUpdate(T entity); 
    T GetById(int Id); 
    T GetByNavigation(string NavigationString); 
    IQueryable<T> All(); 
}