2015-07-18 12 views
9

सी # में लागू करने के लिए, मैं यह कर सकता:टाइपप्रति प्रकार पैरामीटर कई इंटरफेस

class Dictionary<TKey, TVal> where TKey : IComparable, IEnumerable { } 

वहाँ टाइपप्रति एक सामान्य वर्ग या समारोह में एक प्रकार पैरामीटर के लिए 1.5 बीटा में एक तरह से कई लागू करने के लिए है इंटरफेस, उद्देश्य के लिए एक बिल्कुल नया इंटरफेस बनाये बिना?

स्पष्ट रूप से अल्पविराम की अस्पष्टता के कारण स्पष्ट रूप से काम नहीं कर रहा है।

class Dictionary<TKey extends IComparable, IEnumerable, TValue> { } 

वैसे, काफी मजेदार, extends इंटरफ़ेस यूनियनों बिल्कुल ठीक जेनरिक में संभाल कर सकते हैं:

class Dictionary<TKey extends IComparable|IEnumerable, TValue> { } 

उत्तर

1

TS1.5 में, एक ही रास्ता आप ऐसा कर सकते हैं जो फैली हुई है एक नया इंटरफेस की घोषणा है ए और बी, दुख की बात है।

एक और विकल्प आने वाले टीएस 1.6 के लिए प्रार्थना कर रहा है जहां intersection type समर्थित है।

+0

वाह, मैं लगा चौराहे प्रकार अंत में एक बात होगी, लेकिन नहीं पता था कि वे रास्ते में थे । जवाब के लिए धन्यवाद। – Matt

13

Intersection types अब यहाँ के बाद से टीएस 1.6 हैं और आप अपने ऊपर के उदाहरण में इस तरह इसका इस्तेमाल कर सकते हैं:

class Dictionary<TKey extends IComparable & IEnumerable, TValue> { } 
+0

यह दोनों इंटरफेस को विस्तारित करने जैसा बिल्कुल नहीं है। यह इन साधारण मामलों में काम करता है, हालांकि इंटरफेस में कोई ओवरलैप नहीं है। – AlexG

+0

@AlexG आपका क्या मतलब है? इंटरफेस ओवरलैपिंग क्यों एक समस्या होगी? – Alex

+0

{a: number} और {a: string} के साथ परिणामस्वरूप प्रकार चुपचाप {a: संख्या और स्ट्रिंग} जैसा होगा जो दो अलग-अलग इंटरफेस से विरासत के समान नहीं है, जहां एक विरोधाभासी संपत्ति एक raise करेगी त्रुटि। – AlexG

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