1 回答

TA贡献1874条经验 获得超12个赞
你写了:
public interface IGenericRepository<TEntity>
where TEntity: class
{ }
public class GenericRepository<TEntity>
where TEntity:class, IGenericRepository<TEntity>
{ }
这意味着TEntityin aGenericRepository<TEntity>必须是实体的存储库。
这种约束是合法的,但它通常用于类似
class SortedList<T> where T : IComparable<T>
也就是说,T 的排序列表要求 T 与其他 T 具有可比性。
我想你的意图是
public class GenericRepository<TEntity> :
IGenericRepository<TEntity>
where TEntity:class
{ }
正确的?基类和接口的列表出现在约束之前;你把它放在约束中。
也就是说,类声明是这样的:
class ClassName<T> :
BaseClass,
IInterface1,
IInterface2
where
T : CONSTRAINT,
CONSTRAINT,
...
并且约束也必须以正确的顺序出现。如果您对类声明的语法有疑问,请阅读 C# 规范。您似乎对事情发生的顺序有些困惑。
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报