2012-05-21 8 views
5

WinRT में प्रोजेक्ट प्रकार नामक कुछ है। उदाहरण के लिए, मेटाडाटा में, IXamlType.UnderlyingType परिभाषित किया गया है के रूप में:विनरेट प्रोजेक्ट प्रकार प्रलेखन

TypeName UnderlyingType { get; } 

लेकिन जब एक सी # अनुप्रयोग में इस्तेमाल होने वाले इस प्रकार परिवर्तन:

Type UnderlyingType { get; } 

मेरा प्रश्न है - वहाँ नियमों के बारे में कोई प्रलेखन है , एपीआई, ऐसे मैपिंग के लिए इस्तेमाल विशेषताओं?

+0

इसके बारे में कोई दस्तावेज नहीं मिला। केवल चैनल 9 पर इसके बारे में कुछ वीडियो देख चुके हैं, लेकिन शायद यह आपके लिए पर्याप्त गहरा गोता नहीं है? यदि आपको पसंद है तो क्या आपको लिंक भेज सकते हैं? – ChristiaanV

+0

@ क्रिस्टियानवी - लिंक बहुत उपयोगी होंगे, धन्यवाद। हालांकि, इस संबंध में एक पूर्ण और औपचारिक दस्तावेज़ीकरण मेरा माइक्रोसॉफ्ट बेहद सहायक होगा और यह एक आईएमएचओ होना चाहिए। – logicnp

उत्तर

2

यह सही है, सीएलआर मानचित्रों में निर्मित भाषा प्रक्षेपण WinRT प्रकार स्वचालित रूप से सीएलआर प्रकारों के लिए। दस्तावेज़ीकरण करना मुश्किल है, खासकर अभी जब यह अभी भी बीटा सामग्री है। लेकिन एक उत्कृष्ट श्वेत पत्र उपलब्ध है जो सीएलआर प्रक्षेपण के कुछ पहलुओं का वर्णन करता है। डाउनलोड (वर्तमान में) available here (नोट: वर्ड। डॉक्सएक्स फ़ाइल)

1

यह वह लिंक है जिसके बारे में मैं बात कर रहा था जिसके बारे में चैनल 9 http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-874T पर एक वीडियो है कृपया ध्यान दें कि यह बिल्ड कॉन्फ़्रेंस का एक वीडियो है जो डेवलपर पूर्वावलोकन पर आधारित है। मैं भविष्यवाणी नहीं कर सकता कि उपभोक्ता पूर्वावलोकन के साथ इस जानकारी में कितना बदलाव आया है।

मैं मानता हूं कि यह कैसे काम कर रहा है इसके बारे में दस्तावेज होना चाहिए। उम्मीद है कि वे जल्द ही एमएसडीएन पर दस्तावेज अपडेट करेंगे।

2

जब विंडोज मेटाडाटा निम्न स्तर के संलेखन उपकरण (एमआईडीएल/विनर स्विच और एमडीएमईआरईजी के साथ) का उपयोग करके बनाया गया है, तो आम तौर पर असेंबली में किसी भी स्थान का उपयोग किया जाता है एक टाइपपीफ, टाइपपीफ को टाइपफ्रेज़ के साथ प्रतिस्थापित किया जाता है जो एक ही असेंबली के अंदर इंगित करता है।

यह सीएलआर को विंडोज़ रनटाइम प्रकार को संबंधित सीएलआर प्रकार के साथ बदलकर winmd फ़ाइल की सामग्री को फिर से लिखने की अनुमति देता है। इसका सबसे सरल उदाहरण Windows है। फाउंडेशन। यूरी प्रकार को System.Uri से C# अनुप्रयोगों के साथ प्रतिस्थापित किया गया है। सीएलआर आंतरिक रूप से जानता है कि W.F.Uri और S.Uri के बीच कैसे मानचित्र करें और यह स्वचालित रूप से आपके लिए यह अनुवाद करता है।

यह सब सिस्टम द्वारा स्वचालित रूप से संभाला जाता है, इसके लिए नियम हैं, लेकिन मुझे विश्वास नहीं है कि प्रक्रिया डेवलपर नियंत्रित है - मुझे विश्वास है कि प्रकार मैपिंग सीएलआर कार्यान्वयन में जला दिया जाता है।

+0

जानकारी के लिए धन्यवाद। यह ठीक है लेकिन अगर प्रक्रिया dev-controlable नहीं है, लेकिन प्रक्रिया का दस्तावेज़ीकरण बहुत अच्छा होगा! – logicnp

0

वे कहते हैं कि स्रोत कोड सबसे अच्छा दस्तावेज है। इस मामले में यह एकमात्र दस्तावेज प्रतीत होता है। यहां .NET स्रोत के माध्यम से spelunking से मेरे निष्कर्ष हैं।

मेटाडेटा अनुमानों की सूची .NET source using a macro iterator में एन्कोड की गई है।

यह हेडर विभिन्न स्थानों में शामिल है जहां इसे कार्य के लिए डेटा संरचनाओं में परिवर्तित किया गया है। मुझे मिली सबसे अधिक सुलभ जगह WinMD metadata importer और इसकी adapter में है। स्रोत से:

// This metadata importer is exposed publically via CoCreateInstance(CLSID_CorMetaDataDispenser...). 
// when the target is a .winmd file. It applies a small number of on-the-fly 
// conversions to make the .winmd file look like a regular .NET assembly. 

मेरे ले कि आप CoCreateInstance(CLSID_CorMetaDataDispenser...) उपयोग कर सकते हैं एक IMetaDataDispenser बनाने के लिए, एक .winmd फ़ाइल के साथ IID_IMetaDataImport साथ OpenScope() फोन मेटाडाटा आयातक प्राप्त करने के लिए है। इसके बाद आप मेटाडेटा को समझते समय IMap से IDictionary जैसे रूपांतरण करेंगे। मैं अनुमान लगाता हूं, लेकिन मुझे पूरा यकीन है कि विजुअल स्टूडियो मेटाडेटा या इंटरफेस कार्यान्वयन से टाइप परिभाषाएं उत्पन्न करते समय करता है।

आप अपने स्वयं के सी/सी ++ प्रोजेक्ट में मैक्रो इटरेटर के साथ हेडर भी शामिल कर सकते हैं और डेटा को उस रूप में बदल सकते हैं जो आपके लिए सबसे उपयोगी है, उदाहरण के लिए इससे कोड उत्पन्न करें।