2012-09-29 13 views
5

में एक वाइल्डकार्ड पारित करने के लिए? सी # में असली वाइल्डकार्ड नहीं है, हालांकि, आप इसे सी # में सही ढंग से कैसे लिखेंगे जैसे कि कुछ क्लास किसी भी वर्ग को तर्क के रूप में ले सकता है? मैंने ऑब्जेक्ट का उपयोग करने की कोशिश की, लेकिन फिर मुझे एक त्रुटि मिली "... से कोई अंतर्निहित संदर्भ रूपांतरण नहीं है ..."कैसे मैं निम्नलिखित है सी #

धन्यवाद!

उत्तर

6

आपको दूसरे नमूना (यानी Y मेरे नमूने में) निर्दिष्ट करना होगा, ध्यान दें कि Y कुछ भी हो सकता है क्योंकि T जैसा कोई प्रतिबंध नहीं है।

public class Foo<T, Y> : Goo 
    where T: SomeClass<Y>, new() 

एक अन्य विकल्प, यदि आप केवल अपने सामान्य वर्ग में SomeClass<Y> उपयोग करने की आवश्यकता केवल द्वितीय श्रेणी निर्दिष्ट करने के लिए है कि आप नए() प्रतिबंध की जरूरत नहीं होगी क्योंकि संकलक पहले से जानता है SomeClass<T> डिफ़ॉल्ट निर्माता है:

public class Foo<Y> : Goo{ 
    public SomeClass<Y> Value; 

    public void Setup() { Value = new SomeClass<Y>(); } 
} 
संबंधित मुद्दे