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约束的实际示例感兴趣.
我将它们用于我的数据访问层中的存储库类,例如
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)