2011-06-03 8 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(); 
    } 
} 

केस सी केस ए और केस बी का संयोजन है। क्या यह संभव है? केस सी सही कैसे करें?मैं एक जेनेरिक क्लास को कैसे परिभाषित करता हूं जो इंटरफेस लागू करता है और टाइप पैरामीटर को बाधित करता है?

उत्तर

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 
संबंधित मुद्दे

 संबंधित मुद्दे