2012-02-01 8 views
6

अनिवार्य रूप से मैं जो करना चाहता हूं वह एक वर्ग को लागू करता है जिसमें एक ही प्रकार के उदाहरणों के संदर्भों की एक सूची हो सकती है। निम्नलिखित की तरह कुछ:क्या आप एक इंटरफ़ेस को परिभाषित कर सकते हैं जैसे कि उस वर्ग में लागू होने वाले वर्ग में उस सदस्य का सदस्य होना चाहिए?

interface IAccessibilityFeature 
{ 
    List<IAccessibilityFeature> Settings { get; set; } 
} 

class MyAccess : IAccessibilityFeature 
{ 
    List<MyAccess> Settings { get; set; } 
} 

मैं जानता हूँ कि यह संकलन नहीं करेगा क्योंकि इंटरफ़ेस स्पष्ट रूप से कहते हैं मेरी Settings प्रकार List<IAccessibilityFeature> का होना चाहिए। MyAccess कक्षा में जो करने की कोशिश कर रहा हूं, उसे हासिल करने के सही तरीके के रूप में मैं कुछ हूं।

+2

http://msdn.microsoft.com/en-us/library/kwtft8ak(v= पर एक नजर डालें बनाम 80) .aspx –

+0

चीयर्स टॉम, दिलचस्प पढ़ने :) –

+4

ध्यान दें कि वर्तमान में दृश्यमान उत्तरों में से कोई भी वास्तव में * आवश्यकता नहीं है * कार्यान्वयन वर्ग * स्वयं * प्रकार पैरामीटर टी के रूप में प्रदान करता है। यह अंततः आपके ऊपर लागू करने के लिए है सख्त आवश्यकता, प्रकार प्रणाली आपके लिए यह नहीं कर सकती है। –

उत्तर

14

इस प्रयास करें:

interface IAccessibilityFeature<T> where T : IAccessibilityFeature<T> 
{ 
    List<T> Settings { get; set; } 
} 

class MyAccess : IAccessibilityFeature<MyAccess> 
{ 
    List<MyAccess> Settings { get; set; } 
} 
+3

+1 - सामान्य बाधा के साथ अच्छा स्पर्श। –

+0

सुंदर, इसके लिए बहुत बहुत धन्यवाद! –

+0

वाईडब्ल्यू। मैंने इस पैटर्न का कई बार इस्तेमाल किया है। – ja72

3

इस के साथ किया जा सकता है:

interface IAccessibilityFeature<T> 
{ 
    List<T> Settings { get; set; } 
} 

class MyAccess : IAccessibilityFeature<MyAccess> 
{ 
    List<MyAccess> Settings { get; set; } 
} 
+0

बहुत बहुत धन्यवाद एम। बाबाकॉक! –

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