C# 在“where TEntity : class”上实现接口

Chr*_*sco 0 c# generics interface generic-constraints

我对.NET比较陌生,并且偶然发现了这个特定问题:在遵循存储库模式教程时,该类的定义如下所示:

public class GenericRepository<TEntity> where TEntity : class { ...
Run Code Online (Sandbox Code Playgroud)

话虽这么说,这个类应该实现一个接口。既然我已经使用了该:运算符,我该怎么做呢?

public class GenericRepository<TEntity> : IGenericRepository where TEntity : class {也尝试过public class GenericRepository<TEntity> where TEntity : class : IGenericRepository {,但没用

Jon*_*eet 5

由于我已经使用了 : 运算符,我该怎么做?

:不是运算符 - 您只是在泛型类型约束中使用它。您仍然可以指定要实现的接口。

这应该没问题:

public class GenericRepository<TEntity> : IGenericRepository where TEntity : class
Run Code Online (Sandbox Code Playgroud)

或者,如果IGenericRepository是通用接口,您可能需要:

public class GenericRepository<TEntity> : IGenericRepository<TEntity>
    where TEntity : class
Run Code Online (Sandbox Code Playgroud)