c# - Can I apply an attribute to an inherited member? -
मान लीजिए मेरे पास निम्न (तुच्छ सरल) आधार वर्ग हैं:
सार्वजनिक वर्ग सरल {/}
अब मैं निम्न कार्य करना चाहता हूं:
सार्वजनिक वर्ग PathValue: सरल {{XmlAttribute ("पथ")] सार्वजनिक स्ट्रिंग मान {प्राप्त करें ; सेट; }} सार्वजनिक वर्ग ObjectValue: सरल {{XmlAttribute ("ऑब्जेक्ट")] सार्वजनिक स्ट्रिंग मान {get; सेट; }}
लेकिन वास्तव में संपत्ति को फिर से परिभाषित किए बिना मैं बेस क्लास के सदस्यों को विशेषताओं को लागू करना चाहता हूं। क्या यह संभव है?
असली समस्या यह है कि मेरी सीरियलाइज़ेशन तंत्र में / से एक्सएमएल (जो शानदार ढंग से काम करता है), मुझे बहुत सारे समान तत्व मिलते हैं, जहां केवल गुणों के नाम अलग होते हैं (वे संगत नहीं है, और मैं प्रारूप को नियंत्रित नहीं करता)। अभी मुझे प्रत्येक ऐसे तत्व के लिए एक अलग वर्ग बनाने की जरूरत है, जबकि वे 100% समान हैं (विशेषताओं के अलावा)।
मुझे नहीं लगता कि यह संभव है, लेकिन आप शायद कभी नहीं जानते ।
अद्यतन:
मैंने मार्क के दृष्टिकोण की कोशिश की, लेकिन कोई फायदा नहीं हुआ:
सार्वजनिक वर्ग दस्तावेज़ {सार्वजनिक मार्ग वैल्यू पथ; सार्वजनिक ऑब्जेक्टवॉल्यू ऑब्जेक्ट; } क्लास प्रोग्राम {स्टैटिक व्हाइड मेन (स्ट्रिंग [] एआरजीज़) {var doc = new document () {पथ = नया पथ वैल्यू () {मूल्य = "कुछ पथ"}, ऑब्जेक्ट = नया ऑब्जेक्टिवॉल () {मान = "कुछ ऑब्जेक्ट" }}; XmlAttributeOverrides ओवरराइड = नया XmlAttributeOverrides (); ओवरराइड्स.ऐड (टाइपफ (पाथवैल्यू), "वैल्यू", नया एक्सएलएल गुण () {XmlAttribute = नया एक्सएमएलएट्यूबएट्रीएटिवेट ("पथ")}); ओवरराइड्स.ऐड (टाइपफ (ऑब्जेक्टवैल्यू), "वैल्यू", नया एक्सएलएल गुण () {XmlAttribute = नया XmlAttributeAttribute ("ऑब्जेक्ट")}); XmlSerializer serializer = नया XmlSerializer (टाइपफ (दस्तावेज़), ओवरराइड); Serializer.Serialize (कंसोल.ऑटो, डॉक्टर); Console.WriteLine (); Console.ReadLine (); }}
... चाल नहीं करता।
< P> मैं खुद इस सवाल का जवाब देने जा रहा हूं, ताकि मैं इस उत्तर को स्वीकार कर सकूं। मुझे जवाब पसंद नहीं है, लेकिन मुझे लगता है कि यह एकमात्र वैध उत्तर है। जवाब है: नहीं, आप ऐसा नहीं कर सकते।