2013-02-21 72 views
7

नीचे दिए गए उदाहरण कोड को दें, क्या कोई यह समझा सकता है कि पहले typeof() कॉल सफलतापूर्वक क्यों काम करता है लेकिन दूसरा विफल रहता है ?? इससे कोई फर्क नहीं पड़ता कि वे कक्षाएं हैं या इंटरफेस हैं, यह किसी भी तरह से विफल रहता है।एक से अधिक सामान्य प्रकार का उपयोग कर इंटरफेस/कक्षा के प्रकार को पाने में असमर्थ?

interface ITestOne<T1> 
{ 
    T1 MyMethod(); 
} 

interface ITestMany<T1, T2> 
{ 
    T1 MyMethod(T2 myParameter); 
} 

void Main() 
{ 
    var typeOne = typeof(ITestOne<>); //This line works 
    var typeTwo = typeof(ITestMany<>); //Compile error 
} 

उत्तर

9

आपको संकलक को यह जानने की ज़रूरत है कि आप जेनेरिक प्रकार को दो सामान्य तर्कों के साथ देख रहे हैं। कोण ब्रैकेट के बीच एक अल्पविराम जोड़ें:

var typeTwo = typeof(ITestMany<,>); 
+2

DOH! ठीक है, दिन का मेरा होमर सिम्पसन क्षण है। त्वरित प्रतिक्रिया के लिए बहुत बहुत धन्यवाद !! जैसे ही 15 मिनट की अनिवार्य खिड़की बंद हो जाती है, मैं इसे उत्तर के रूप में चिह्नित करूंगा। –

+0

कोई चिंता नहीं :) हम सभी को ये क्षण मिलते हैं – TheEvilPenguin