可以在泛型类型约束上指定它必须实现泛型类型吗?

Jea*_*nal 6 .net c# generics type-constraints

这是我想做的事情:

public interface IRepository<TSet<TElement>> where TSet<TElement> : IEnumerable<TElement>
{
    TSet<TEntity> GetSet<TEntity>();
}
Run Code Online (Sandbox Code Playgroud)

在.NET中这样的构造是否可行?

编辑:问题不够明确.这是我想要做的,扩展的:

public class DbRepository : IRepository<DbSet<TElement>> {
    DbSet<TEntity> GetSet<TEntity>();
}

public class ObjectRepository : IRepository<ObjectSet<TElement>> {
    ObjectSet<TEntity> GetSet<TEntity>();
}
Run Code Online (Sandbox Code Playgroud)

意思是,我希望约束类型: - 接受单个泛型参数 - 实现给定的单个通用参数接口.

那可能吗?事实上,我只会对第一件事情感到满意.

public interface IRepository<TGeneric<TElement>> {
    TGeneric<TArgument> GetThing<TArgument>();
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

您需要使用两种泛型类型来实现此目的,例如:

public interface IRepository<TCollection, TItem> where TCollection : IEnumerable<TItem>
{
    TCollection GetSet<TItem>();  
}
Run Code Online (Sandbox Code Playgroud)

(我假设TEntity应该是TElement原来的...)

话虽这么说,最有可能写出类似的东西:

public interface IRepository<T>
{
    IEnumerable<T> GetSet<T>();  
}
Run Code Online (Sandbox Code Playgroud)

这将是实现上述目标的更常用手段.