2011-06-03 208 views
38
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正确?如何定义实现接口并约束类型参数的泛型类?

回答

58

首先实现的接口,那么泛型类型的限制由where分离:

class SampleC<T> : IDisposable where T : IDisposable // case C 
{  //      ↑ 
    public void Dispose() 
    { 
     throw new NotImplementedException(); 
    } 
} 
5
class SampleC<T> : IDisposable where T : IDisposable // case C 
{  
    public void Dispose()  
    {   
     throw new NotImplementedException();  
    } 
} 
2
class SampleC<T> : IDisposable where T : IDisposable 
{ 
... 
} 
4

你可以这样说:

public class CommonModel<T> : BaseModel<T>, IMessage where T : ModelClass 
相关问题