2013-07-08 6 views
10

मैं निर्मित विशेषताएं (System.Runtime.Serialization.SerializableAttribute की तरह) की एक निश्चित संग्रह है कि मैं वर्गोंसी # विशेषता संग्रह

की एक निश्चित संग्रह करने के लिए लागू करना चाहते हैं एक में उन विशेषताओं को एकजुट करने के क्या यह संभव है ? मैं उन सभी को अपने सभी वर्गों में स्पष्ट रूप से लागू नहीं करना चाहता हूं (एंटीब्यूट संग्रह विकास प्रक्रिया के दौरान बदल सकता है)

जो मैं चाहता हूं वह एक विशेषता है, उदा।

public class MyClassAttribute: System.Attribute { ... } 

जो मैं अपने वर्गों

[MyClass] 
public class SampleClass { ... } 

और उस को आसानी से लागू हो सकते हैं Serializable विशेषता और दूसरों के लिए SampleClass का कारण होगा। धन्यवाद

+0

शायद [पोस्टशर्प] (http://www.postsharp.net/) के लिए एक अच्छा उम्मीदवार? –

उत्तर

0

मुझे नहीं लगता कि यह बॉक्स से बाहर संभव है, लेकिन आप पोस्ट-बिल्ड चरण में अपनी असेंबली में प्रकारों को संशोधित करने, अपने संग्रह-विशेषता को हटाने और दूसरों को जोड़ने के लिए Mono.Cecil का उपयोग कर सकते हैं।

8

नहीं, यह मूल रूप से नहीं है। असल में, [Serializable]विशेष रूप से नोट-योग्य है क्योंकि इसमें कंपाइलर में अलग-अलग उपचार हैं - यह एक विशेषता के रूप में नहीं लिखा गया है, लेकिन कच्चे ध्वज के रूप में (रनटाइम बस झूठ बोलता है यदि आप पूछते हैं "क्या इसमें [Serializable] विशेषता है" - यह प्रकार के खिलाफ ध्वज की जांच करता है, और यह देखने के लिए कि की अपेक्षा करता है, भले ही यह सत्य न हो)।

0

दिलचस्प सवाल। मुझे लगता है कि बहुत से अंतर्निर्मित गुणों को बंद कर दिया गया है, इसलिए यह संभव नहीं हो सकता है।

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