问题
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();
}
}
Case C is the combination of case A and case B. Is that possible? How to make case C right?
回答1:
First the implemented interfaces, then the generic type constraints separated by where:
class SampleC<T> : IDisposable where T : IDisposable // case C
{ // ↑
public void Dispose()
{
throw new NotImplementedException();
}
}
回答2:
class SampleC<T> : IDisposable where T : IDisposable // case C
{
public void Dispose()
{
throw new NotImplementedException();
}
}
回答3:
You can do it like this:
public class CommonModel<T> : BaseModel<T>, IMessage where T : ModelClass
回答4:
class SampleC<T> : IDisposable where T : IDisposable
{
...
}
来源:https://stackoverflow.com/questions/6223075/how-do-i-define-a-generic-class-that-implements-an-interface-and-constrains-the