2011-06-03 95 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 
相關問題