2012-01-04 13 views
32

में IsSubclassOf या IsAssignableFrom के लिए कोई विकल्प C12 मेट्रो-शैली में IsSubclassOf या IsAssignableFrom के लिए कोई विकल्प है?सी # मेट्रो-शैली

मैं इस कोड को मेट्रो पर चलाने की कोशिश कर रहा हूं लेकिन वैकल्पिक नहीं ढूंढ सकता।

if ((ui.GetType() == type) || (ui.GetType().IsSubclassOf(type))) 
{ 
    return true; 
} 

उत्तर

54

कई प्रतिबिंब विधियों को System.Reflection.TypeInfo कक्षा में पाया जा सकता है।

आप GetTypeInfo विस्तार विधि, System.Reflection.IntrospectionExtensions द्वारा प्रदान का उपयोग कर अपने Type के लिए TypeInfo का एक उदाहरण प्राप्त कर सकते हैं:

using System.Reflection; 

// ... 

ui.GetType().GetTypeInfo().IsSubclassOf(type) 
+0

मेट्रो-शैली विंडोज 8 .net फ्रेमवर्क में कई प्रतिबिंब विधियां उपलब्ध नहीं हैं। यही कारण है कि मैं वैकल्पिक खोज रहा था। लेकिन मुझे लगता है कि कोई विकल्प नहीं है, ऐसा लगता है कि स्पष्ट प्रकार के साथ "है" या "जैसा" उपयोग करना है। –

+0

@MichaelSync: मुझे समझ में नहीं आता कि आप क्यों कहते हैं कि कोई विकल्प नहीं है। क्या 'TypeInfo' आपके लिए काम नहीं करता है? यदि नहीं, तो क्यों नहीं? –

+0

कृपया मेट्रो .net संदर्भ पर एक नज़र डालें। http://msdn.microsoft.com/en-us/library/windows/apps/hh441595(v=vs.110).aspx .. बहुत सारे प्रकार गायब हैं .. –

15

आप इस का उपयोग कर सकते हैं:

using System.Reflection; 

// ... 

ui.GetTypeInfo().IsAssignableFrom(type.GetTypeInfo()); 

यह मेट्रो में काम करता है।