如何定义实现接口并约束类型参数的泛型类
本文关键字:约束 类型参数 泛型类 接口 实现 何定义 定义 | 更新日期: 2023-09-27 17:58:14
class Sample<T> : IDisposable // case A
{
public void Dispose()
{
throw new NotImplementedException();
}
}
class SampleB<T> where T : IDisposable // case B
{
}
class SampleC<T> : IDisposable, T : IDisposable // case C
{
public void Dispose()
{
throw new NotImplementedException();
}
}
案例C是案例A和案例B的组合。这可能吗?如何使案例C正确?
首先是实现的接口,然后是由where
:分隔的通用类型约束
class SampleC<T> : IDisposable where T : IDisposable // case C
{ // ↑
public void Dispose()
{
throw new NotImplementedException();
}
}
class SampleC<T> : IDisposable where T : IDisposable // case C
{
public void Dispose()
{
throw new NotImplementedException();
}
}
你可以这样做:
public class CommonModel<T> : BaseModel<T>, IMessage where T : ModelClass
class SampleC<T> : IDisposable where T : IDisposable
{
...
}
问题是保持"where…"最后
public class BaseRepository<TEntity> : IRepository<TEntity>, IDisposable where TEntity : class
{
// enter code here
}