如何定义一个实现接口的generics类并约束types参数?

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正确?

首先实现的接口,然后通用types的约束由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 { ... }