.NET泛型中具有子类型约束的真实示例

jul*_*iet 0 c# generics generic-programming type-constraints

是否存在在.NET泛型中对类型参数使用子类型约束的实际示例?通过«subtyping constraints»我的意思是

where T : <base class name>
Run Code Online (Sandbox Code Playgroud)

where T : U
Run Code Online (Sandbox Code Playgroud)

可能有一些具有相应约束的标准泛型?或专门的通用.NET库.

UPD有很多关于接口约束的好例子

where T : <interface name>
Run Code Online (Sandbox Code Playgroud)

但是,子类型约束似乎非常具体,并没有那么有用.我试着理解,在这种情况下,这种约束是至关重要的.Luaan的回答包含where T : <base class name>来自ASP.NET MVC的示例,但我仍然对具有where T : U约束的实际示例感兴趣.

Jon*_*ter 6

我将它们用于我的数据访问层中的存储库类,例如

public interface IRepository<T>
    where T : IDbItentity
{

    IList<T> GetAll();
    T GetById(int id);
    int Insert(T saveThis);
    void Update(T updateThis);
    void Delete(T deleteThis);
}
Run Code Online (Sandbox Code Playgroud)

其中IDBItentity是一个接口,如下所示:

public interface IDbItentity
{
    int Id { get; }
}
Run Code Online (Sandbox Code Playgroud)