शायद मैं सी # या .NET ढांचे के कुछ उपयोग किए गए feautre की अपनी अज्ञानता का प्रदर्शन कर रहा हूं, लेकिन मैं जानना चाहता हूं कि EmailAddress
जैसे प्रकार के उपनाम बनाने के लिए एक मूल रूप से समर्थित तरीका है जो string
उपनाम करता है लेकिन ऐसा है कि मैं इसे bool Validate()
जैसे अपने तरीकों से बढ़ा सकते हैं?क्या मौजूदा स्ट्रिंग-टाइप किए गए उपनामों को 'स्ट्रिंग` या' int` जैसे सी # दृढ़ता से टाइप किए गए उपनाम परिभाषित करने का कोई तरीका है?
मुझे using x = Some.Type;
उपनामों के बारे में पता है, लेकिन ये वैश्विक नहीं हैं और न ही वे प्रकार की सुरक्षा प्रदान करते हैं, यानी कोई मौजूदा फ़ाइल में उपयोग उपनाम के लिए सामान्य string
को स्वैप कर सकता है। मैं अपने EmailAddress
को अपने स्वयं के प्रकार, स्वतंत्र और string
के साथ विनिमेय नहीं होना चाहता हूं, जो कि यह छाया करता है।
मेरा वर्तमान समाधान बॉयलरप्लेट निहित स्ट्रिंग रूपांतरण ऑपरेटरों और अन्य ऐसी चीजों को उत्पन्न करने वाले टी 4 टेम्पलेट के साथ public sealed partial EmailAddress : IEquatable<EmailAddress>, IXmlSerializable
कक्षाएं उत्पन्न करना है। यह मेरे लिए अभी ठीक है और मुझे बहुत लचीलापन देता है लेकिन मेरे दिमाग के पीछे यह मूर्खतापूर्ण लगता है कि मुझे बॉयलरप्लेट कोड की इतनी भारी मात्रा उत्पन्न करने के लिए एक मजबूत प्रकार उपनाम बनाने के रूप में सरल कुछ करना है।
शायद कोड पीढ़ी के अलावा यह संभव नहीं है, लेकिन अगर मैं दूसरों ने अपने डिजाइनों और आपके अनुभवों के समान कुछ करने का प्रयास किया है तो मैं उत्सुक हूं। यदि कुछ और नहीं है, तो शायद यह सी # के एक अनुमानित भविष्य संस्करण में ऐसी उपनाम सुविधा के लिए एक अच्छा उपयोग-मामला के रूप में कार्य कर सकता है। धन्यवाद!
संपादित करें: वास्तविक मूल्य जो मैं चाहता हूं वह प्राचीन प्रकार के साथ प्रकार की सुरक्षा प्राप्त करने में सक्षम होना है जो डेटा के लिए विभिन्न प्रकार/प्रारूपों का प्रतिनिधित्व करता है। उदाहरण के लिए, EmailAddress
और SocialSecurityNumber
और PhoneNumber
, जिनमें से सभी string
का उपयोग उनके अंतर्निहित प्रकार के रूप में करते हैं, लेकिन जो स्वयं और उनके बीच विचलित प्रकार नहीं हैं। मुझे लगता है कि यह आपको अधिक पढ़ने योग्य और स्वयं-दस्तावेज कोड प्राप्त करता है, अधिक अस्पष्ट अधिभार संभावनाओं के अतिरिक्त लाभों का उल्लेख नहीं करना जो कम अस्पष्ट हैं।
इसे क्यों वोट दें और कोई टिप्पणी न छोड़ें? चलो करते हैं। – JMD
ऐसा लगता है कि आपके पास कम से कम एक उचित सी # knoledgde है इसलिए मेरी टिप्पणी बेवकूफ लग सकती है, लेकिन आप जो चाहते हैं उसे "टाइप पदानुक्रम" कहा जाता है और स्ट्रिंग क्लास को कोड करने वाले लोग आपको "ओओ फीचर" का उपयोग करने से रोकना चाहते थे ताकि वे बने स्ट्रिंग क्लास सील कर दिया गया है, यही कारण है कि आप जो भी चाहते हैं वह करने में सक्षम नहीं होंगे। सबसे अच्छा तरीका यह है कि आप अभी इस पर हैं: अपना स्वयं का प्रकार बनाएं और स्ट्रिंग में एक अंतर्निहित रूपांतरण करें। –
@Andre: क्यों नहीं टिप्पणी के रूप में अपनी टिप्पणी पोस्ट करने पर विचार करें? –