来自约束的泛型类型参数推断

时间:2017-12-15 15:19:54

标签: c# generics

我想为系统中的实体定义一个通用基类,公开实体的标识符类型(例如int,Guid等)

class Entity<TId>
{
}

class Product : Entity<int>
{
}

然后我可以定义一个通用存储库接口来检索由id键入的实体字典。

interface IRepository<TEntity, TId> where TEntity : Entity<TId>
{
    Dictionary<TId, TEntity> Get();
}

为了使用这个通用接口,我必须提供两个类型参数:

IRepository<Product, int> productRepository;

然而,这感觉多余。在接口定义中给定类型约束时,是否无法推断第二个类型参数?我希望能够写下:

IRepository<Product> productRepository;

编辑:显然,我在搜索方面表现不佳。与往常一样,在发布之后,我无法找到一个好的解释。

此问题被标记为重复,但我发现了我认为比链接副本更好的资源。

最完整的解释是Eric Lippert的博客文章:

更相关的SO问题:

另见:

0 个答案:

没有答案