C#Generic Repository

时间:2011-12-08 05:38:11

标签: c# generics

我正在尝试实现一个通用存储库,但我遇到了困难。以下是我的对象模型的摘要。问题是具体的存储库“UserAccountRepositoryStub”将无法编译。错误是:

  

类型用户必须可转换为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

3 个答案:

答案 0 :(得分:5)

AbstractRepository<T>的定义应该是

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

因为您希望存储库实现IRepository<T>而不是其中的对象,对吧?

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

在您的AbstractRepository上,您已将IRepository置于错误的位置。 “where”之后和“{...}”之前的所有内容都指定了通用约束。要指定继承,您需要将其放在where之前。

试试这个

public class AbstractRepository<T> : IRepository<T> where T : class, IEntity {...}
相关问题