How do I define a generic class that implements an interface and constrains the type parameter?

我的未来我决定 提交于 2019-11-30 11:44:02

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!