c# - Have property be the same type as property of another class -


क्या मेरे पास StudentId वर्ग की StudentRegistered हो सकता है Student.Id (यानी, बाइट ) बाइट को StudentRegistered घोषणापत्र में उल्लेखित किए बिना के रूप में

< P> मैं अपने कोड में केवल एक बार में व्यक्ति के प्रत्येक व्युत्पन्न वर्ग के लिए आईडी प्रकार को परिभाषित करना चाहूंगा मुझे क्या याद आ रहा है?

  सार्वजनिक वर्ग व्यक्ति & lt; T & gt; {सार्वजनिक टी आईडी {प्राप्त; सेट; } सार्वजनिक स्ट्रिंग नाम {get; सेट; }} सार्वजनिक वर्ग के छात्र: व्यक्ति & lt; बाइट & gt; {} सार्वजनिक कक्षा वयस्क: व्यक्ति & lt; लघु & gt; {} पब्लिक क्लास छात्र पंजीयन {सार्वजनिक / * प्रकार * / छात्र आईडी {प्राप्त करें; सेट; } सार्वजनिक int EventId {get; सेट; }}  

संपादित करें, स्पष्ट करने के लिए:

  • मैं उम्मीद कर रहा था कि Student.Id विद्यार्थी घोषणा के बाहर कहीं भी> प्रकार (यानी, बाइट )
  • मुझे स्ट्रिंग नाम को StudentRegistered की एक संपत्ति के रूप में की आवश्यकता नहीं है।
  • कोई भी वयस्क नहीं होगा < / Code> s में StudentRegistered बाइट टाइप के लिए StudentRegistered.StudentId पर्याप्त है।

नहीं, आप क्या पूछ रहे हैं, इसका कोई तरीका नहीं है क्योंकि विद्यार्थी पंजीयन दो अलग-अलग प्रकार के होंगे, एक बाइट के लिए StudentId कोड> और छोटा के लिए StudentId के साथ।

आम आईडी के लिए अलग-अलग प्रकार की आवश्यकता के कारण यहाँ गंभीर डिजाइन समस्याएं हैं। एक इनरियड विधि के साथ आम आधार अंतरफलक के लिए आपका सबसे अच्छा चयन और फिर पंजीकरण के साथ अंतरफलक को लिंक करें।

<पूर्व> सार्वजनिक इंटरफ़ेस आईपर्सन {मान प्रकार इनरआईडी {प्राप्त करें; }} सार्वजनिक अमूर्त वर्ग व्यक्ति & lt; T & gt; : आईपर्सन जहां टी: स्ट्रेट {सार्वजनिक टी आईडी {प्राप्त; सेट; } सुरक्षित सार मूल्य प्रकार InnerID {get; } ValueType IPerson.InnerID {get InnerID; }}} सार्वजनिक वर्ग के छात्र: व्यक्ति & lt; बाइट & gt; {सुरक्षित ओवरराइड वैल्यू टाईप इनरआईडी {प्राप्त करें {वापसी आईडी; }}} सार्वजनिक वर्ग वयस्क: व्यक्ति & lt; लघु & gt; {सुरक्षित ओवरराइड वैल्यू टाइप इनरआईडीआईडी ​​{वापसी आईडी प्राप्त करें; }}} सार्वजनिक वर्ग StudentRegistered {सार्वजनिक मानदंड StudentID {get {return Person.InnerID; }} सार्वजनिक आईपर्सन व्यक्ति {प्राप्त; सेट; } सार्वजनिक int EventId {get; सेट; }} वर्ग कार्यक्रम {स्थिर शून्य मुख्य (स्ट्रिंग [] एआरजी) {var A = नया छात्र () {आईडी = 100}; // बाइट वाई बी = नए वयस्क () {आईडी = 1000}; // लघु var regA = नया छात्र पंजीकरण () {व्यक्ति = ए}; कंसोल.प्रकाश रेखा ("प्रकार: {0} मान: {1}", regA.StudentID.GetType ()। नाम, regA.StudentID); // टाइप: बाइट वैल्यू: 100 var regB = नया छात्र पंजीयन () {व्यक्ति = बी}; कंसोल.प्रकाश रेखा ("प्रकार: {0} मान: {1}", regb.StudentID.GetType ()। नाम, regb.StudentID); // टाइप: इंट 16 मान: 1000}}

Comments