2011-04-13 9 views
20

सी # प्रकारों के लिए स्वचालित रूप से जेनरेट किए गए GUID हैं? उदाहरण के लिए, यदि मुझे अपने इंटरफ़ेस के लिए GUID मिलता है, IFoo (typeof(IFoo).GUID), पहली बार प्रोग्राम चलाने के बाद, क्या मैं प्रोग्राम चलाने के दौरान हर बार एक ही GUID प्राप्त करूंगा?.NET संगत में प्रकारों के लिए स्वचालित रूप से जेनरेट किए गए GUID हैं?

मैंने इसे अपनी मशीन पर स्थानीय रूप से परीक्षण किया है, और ऐसा हमेशा एक जैसा लगता है, लेकिन मुझे यकीन नहीं है कि मैं हमेशा मशीनों पर निर्भर रह सकता हूं।

+0

क्या, वैसे भी? – BoltClock

+0

मुझे लगता है कि वह GUID बिल्कुल उत्पन्न नहीं हो रहा है, लेकिन एक बार उत्पन्न हुआ था और इसलिए यह हमेशा एक जैसा है। – Rhapsody

उत्तर

15

देखें: System.Type.GUID stability। ऐसा प्रतीत होता है कि विधि का वर्तमान कार्यान्वयन सीएलआर द्वारा लागू एक आंतरिक कॉल पर निर्भर करता है। जब तक कि माइक्रोसॉफ्ट ऑटो-जेनरेटेड गइड्स के लिए अनुबंध को स्पष्ट नहीं करता है (Type.GUID दस्तावेज वर्तमान में इस मुद्दे पर चुप है), मैं मनाए गए व्यवहार पर भरोसा नहीं करता। स्थिरता के बारे में सुनिश्चित करने के लिए, मैं GuidAttribute के साथ प्रश्नों में स्पष्ट रूप से सजाए जाने की अनुशंसा करता हूं।

+0

धन्यवाद। मैं स्पष्ट रूप से GUID को परिभाषित करने से बचने की कोशिश कर रहा था, लेकिन ऐसा लगता है कि यह सबसे सुरक्षित मार्ग होगा। – blachniet

+0

यदि आप उत्सुक हैं, [यहां सीएलआर में कोड है] (https://github.com/dotnet/coreclr/blob/7f7d8276e65059a37001aaa5ce9af7e82249f4a0/src/vm/methodtable.cpp#L7377) कि Type.GUID आगे बढ़ रहा है । –

0

यह दस्तावेज नहीं है इसलिए मैं पूरी तरह से उन पर भरोसा नहीं करता, ने कहा कि कार्यान्वयन भविष्य में बदल सकता है या नहीं भी।

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