2011-12-08 73 views
0

我想實現一個通用的存儲庫,但我被掛住了。這是我的對象模型的總結。問題是具體的存儲庫「UserAccountRepositoryStub」不能編譯。錯誤是:C#通用存儲庫

類型用戶必須轉換爲類型IRepository ...

IRepostory:

public interface IRepository<T> where T : IEntity 
{ 
... 
} 

摘要庫:

public class AbstractRepository<T> where T : class, IEntity, IRepository<T> {...} 

IUserAccountRepository:

public interface IUserAccountRepository 

用戶:

public class User : IEntity{...} 

UserRepositoryStub(混凝土):

public class UserAccoutRepositoryStub : AbstractRepository<User>, IUserAccountRepository 

回答

6

,因爲你想要的資料庫來實現IRepository<T>沒有的AbstractRepository<T>的定義也許應該是

public class AbstractRepository<T> : IRepository<T> where T : class, IEntity {...} 

對象在裏面,對吧?

+0

衛生署!我有限制倒退。謝啦! – Nick

1

您的AbstractRepository要求T的類型爲IRepository<T>。你的意思是:

public class AbstractRepository<T> : IRepository<T> where T : class, IEntity, {...} 
2

在你的AbstractRepository中你已經得到了IRepository的錯誤地點。 「where」之後和「{...}」之前的所有內容都指定了通用約束條件。要指定繼承,你需要把它放在哪裏。

試試這個

public class AbstractRepository<T> : IRepository<T> where T : class, IEntity {...}