2011-10-22 13 views
23

में गुम टाइप। गेटप्रॉपर्टी() विधि विंडोज 8 मेट्रो (विनआरटी) में एक साधारण एप्लिकेशन पोर्ट करने की कोशिश कर रहा हूं। ऐसा लगता है कि कुछ बहुत ही बुनियादी विधियां गायब हैं। एक मूल उदाहरण: Type.GetProperty()। यह विंडोज फोन 7, सिल्वरलाइट और .NET क्लाइंट प्रोफाइल के लिए उपलब्ध है। क्या मुझे कुछ स्थापित करना है (उदाहरण के लिए एक विशेष पुस्तकालय) या यह विधि .NET मेट्रो प्रोफ़ाइल में उपलब्ध नहीं है?विंडोज 8 डेवलपर पूर्वावलोकन

अद्यतन

ठीक है, धन्यवाद। अब मैं this.GetType().GetTypeInfo().DeclaredProperties का उपयोग करता हूं।

using System.Reflection; इस GetTypeInfo() एक्सटेंशन विधि के लिए आवश्यक है।

+0

सिडेनोट: मेट्रो में मौजूदा WP7 ऐप को बंद करना इतना आसान नहीं है। केवल नामस्थान परिवर्तन नहीं हैं ... (प्रतिबिंब, स्ट्रीम, डिस्पैचर, ...) –

उत्तर

24

मेट्रो में प्रतिबिंब थोड़ा सा बदल गया है: MSDN ("प्रतिबिंब परिवर्तन" - नीचे के पास) देखें।

असल में, अब आपको इसकी आवश्यकता है: type.GetTypeInfo()

12

निकोलस बटलर प्रतिक्रिया के अतिरिक्त, मैं सभी प्लेटफार्मों में कोड को पुन: प्रयोज्य बनाए रखने के लिए इस तरह के एक्सटेंशन का उपयोग कर समाप्त हुआ।

#if NETFX_CORE // Workaround for .Net for Windows Store not having Type.GetProperty method 
    public static class GetPropertyHelper 
    { 
     public static PropertyInfo GetProperty(this Type type, string propertyName) 
     { 
      return type.GetTypeInfo().GetDeclaredProperty(propertyName); 
     } 
    } 
#endif 

इस तरह, Type.GetProperty() सभी प्लेटफार्मों के लिए लागू किया गया है।

+0

अनुमोदित, यह एक पुराना धागा है, लेकिन मुझे यह जोड़ना चाहिए कि GetDeclaredPropert (y/ies) केवल वर्तमान प्रकार पर गुण लौटाएगा। इसका अर्थ यह है कि यदि कक्षा 2 कक्षा 1 से निकला है, तो GetDerivedProperties केवल कक्षा 2 से गुण लौटाएंगे। – Falgantil

+0

@ BjarkeSøgaard यदि आप सभी गुणों में खोजना चाहते हैं तो आप 'type.GetRuntimeProperty (propertyName)' – redent84

+0

का उपयोग कर सकते हैं असल में मैं इसे समाप्त कर रहा हूं: (; टाइप! = Null; type = type.GetTypeInfo()। बेस टाइप) – Falgantil

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

  • कोई संबंधित समस्या नहीं^_^