dart - How to get declared type with mirrors? -
आयात 'डार्ट: दर्पण'; शून्य मुख्य () {var दर्पण = परावर्तन मेल (MyClass); मिरर.डिकायरेशन। ईस्ट ((कश्मीर, वी) {प्रिंट (कश्मीर); अगर (वी वैरिएबल मिरर है) {प्रिंट (v.type);}}); } वर्ग MyClass {var aDynamic; Int anInt; } // प्रिंट: 'डायनामिक' प्रकार '' डायनामिक 'प्रतीक ("एक") क्लासएमरर पर' इंट 'सिग्नल ("माइकलस") पर टाइपमिरर
क्या कोई रास्ता नहीं है I प्रकार टाइप करें मिरर को रिफल्क्टिंग करना है तो आईडी को ऊपर दिए गए उदाहरण में 2 गुणों के लिए डायनामिक
और प्रकार int
वापस करना पसंद है?
वेरिएबल मिरर। टाइप
सही जाने का सही तरीका है यदि यह क्लासमिरर देता है, तो आप घोषणा के लिए प्रकार ऑब्जेक्ट प्राप्त करने के लिए ClassMirror.reflectedType
का उपयोग कर सकते हैं।
वैरिएबल मिरर। टाइप
हो जाएगा घोषित प्रकार का चर, न कि वैरिएबल के किसी भी मान का प्रकार, इसलिए जब यह एक TypeMirror होगा यह क्लासमिरर नहीं हो सकता है यह एक प्रकार वैरिएबल मिरर या टाइपेडफ़िमरर भी हो सकता है। आप अपने आउटपुट में देख सकते हैं कि गतिशील मामले के लिए दर्पण गतिशील
पर एक TypeMirror है तो आपको यह पता लगाना होगा कि उन लोगों से कैसे निपटें। उदाहरण के लिए, कोई प्रकार ऑब्जेक्ट नहीं है जो कि डायनामिक
का प्रतिनिधित्व करता है, इसलिए आपको इसे अलग से संभाल करना होगा मैं शायद इसे केवल ऑब्जेक्ट
में बदल दूंगा। TypedefMirrors के लिए, आप फ़ंक्शन
वापस कर सकते हैं। मुझे वास्तव में यह निश्चित नहीं है कि अन्य टाइप एमरर्स जो कोई उपप्रकार नहीं हैं।
यहां कुछ उदाहरण कोड है:
अंतिम _ डायनामिक टाइप = प्रतिबिंबित करें (गतिशील); टाइप करेंटिप्लेयर टाइप (वेरिएबल मेरर एम) {var t = m.type; अगर (टी क्लासमिरर है) रिटर्न टी। रिफ्लेटेड टाइप; अगर (टी TypedefMirror है) वापसी समारोह; यदि (टी == _dynamicType) वस्तु वापस लौटाता है; नया तर्क फेंकें ("मुझे पता नहीं है कि $ {t} कैसे संभालना है)"; }
Comments
Post a Comment