2010-10-19 16 views
7

असल में मैं क्या जानना चाहता हूं कि क्या नेट आधारित भाषाओं में नए 'कथन' जोड़ने का कोई तरीका है? जो मैं खोज रहा हूं उसका एक उदाहरण public class MyClass decoratorOf ClassWithLotsOfMethods पेश करने जैसा कुछ होगा और पूर्व-संकलन समय में बदलना सामान्य श्रेणी होने के लिए जो डिफ़ॉल्ट रूप से सब कुछ ओवरराइड करता है लेकिन जिस तरीके से मैं परिभाषित करता हूं।सी # भाषा विस्तार?

एक और उदाहरण .net 3.5 ऑटो गुण, या विस्तार के तरीकों होगा, आदि

यह सिर्फ मनोरंजन के लिए है नहीं है कि मैं वास्तव में इस बस जिज्ञासु ऐसा करने के लिए, चाहते हैं, तो संभव है

धन्यवाद! सेबा

+0

लगता है कि आपने जिस तरह से मैं था की सोच रहे हैं काम करने के लिए विस्तार विधियों की तरह - यदि फू को बार के एक्सटेंशन क्लास के रूप में घोषित किया गया है, तो फू के रूप में घोषित ऑब्जेक्ट को बार-माना जाएगा, स्वयं-स्थैतिक तरीकों और फू के गुणों की संकलन-समय प्रसंस्करण को छोड़कर, जो बिना शर्त बार की छायाएं (यहां तक ​​कि जब बार में संबंधित विधियां मौजूद हों)। इस तरह के एक डिजाइन फू का उपयोग करने वाले कोड को तोड़ने के बिना सदस्यों को बार में जोड़ने की अनुमति देगा, भले ही ऐसे सदस्य फू के एक्सटेंशन के नाम से मेल खाते हों। बहुत बुरा मैं भाषा समर्थन करने के लिए किसी भी तरह से नहीं जानता है। – supercat

+0

@supercat: आपको [स्कैला implicits] पर एक नज़र डालना चाहिए (http://www.artima.com/weblogs/viewpost.jsp?thread=179766) –

उत्तर

8

सी # इसकी अनुमति नहीं देता है। आप जेनरेटेड आईएल को पोस्ट-कंपाइलर के साथ ट्विक कर सकते हैं (जैसे CciSharp)।

कुछ वैकल्पिक .NET भाषाएं जो एक्सटेंशन को अनुमति देती हैं Nemerle और Boo हैं।

5

अंतर्निहित कुछ भी नहीं है।

आप निश्चित रूप से प्रीप्रोसेसर का उपयोग कर सकते हैं लेकिन इससे आपको लोकप्रिय नहीं बनाया जाएगा।

+1

हाँ, सिमुला को देखो - वे सब कुछ आविष्कार किया गया था- उन्मुख प्रोग्रामिंग। या सी ++ - यह बहुत लोकप्रिय नहीं है, है ना? :-) – Ken

+0

@ केन: प्री-प्रोसेसर को कैसे जोड़ना उसे लोकप्रिय बनाता है? और सिमुला के साथ क्या करना है (जो वास्तव में एएलजीओएल का विस्तार नहीं था)? –

+0

मुझे लगता है कि किसी प्रीप्रोसेसर के उपयोग पर विश्वास करने का कोई कारण नहीं है, इसकी लोकप्रियता पर कोई विशेष प्रभाव पड़ता है, क्योंकि चरम लोकप्रियता और अलोकप्रियता के अच्छे उदाहरण हैं और बिना किसी के। और (यदि इंटरनेट पर मिले दर्जन अलग इतिहासों पर विश्वास किया जाता है) सिमुला ने अल्गोल के लिए प्रीप्रोसेसर के रूप में जीवन शुरू किया (जैसे सी ++ ने सी के लिए प्रीप्रोसेसर के रूप में जीवन शुरू किया), हालांकि (जैसे सी ++) ने जल्द ही इसका जीवन लिया खुद। – Ken

3

नहीं मैं के बारे में पता है, लेकिन PostSharp और T4 Templates पर एक नज़र डालें और देखें कि यदि आपकी समस्या :)

+0

मैंने पहले टी 4 के साथ सजावटी बनाया है। यह अच्छी तरह से काम करता है, और स्थापित करने के लिए अतिरिक्त कुछ भी नहीं चाहिए –

+0

टी 4 मेरा पहला विकल्प होगा। –

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