मेरा मतलब यह नहीं है कि एक कम व्युत्पन्न वर्ग में निचला इंटरफ़ेस या बेस क्लास कास्टिंग करने के अर्थ में गतिशील कास्टिंग का मतलब है, मेरा मतलब है कि मैंने एक इंटरफ़ेस परिभाषा ले ली है जिसे मैंने बनाया है, और फिर गतिशील रूप से उस इंटरफेस को कास्टिंग करने के लिए एक अलग ऑब्जेक्ट नहीं लिया गया है उस इंटरफेस से लेकिन सभी कॉल का समर्थन करते हैं।क्या सी # 4 "गतिशील कास्टिंग" की अनुमति देगा? यदि नहीं, तो सी # इसका समर्थन करना चाहिए?
उदाहरणों गतिशील के साथ घोषित के लिए उदाहरण के लिए,
interface IMyInterface
{
bool Visible
{
get;
}
}
TextBox myTextBox = new TextBox();
IMyInterface i = (dynamic<IMyInterface>)myTextBox;
यह जाना जाता है प्रकार के लिए संकलन समय पर प्राप्त किया जा सकता है, और क्रम। इंटरफ़ेस परिभाषा ज्ञात है, जैसा कि प्रकार (इस उदाहरण में) है, इसलिए संकलक यह निर्धारित कर सकता है कि ऑब्जेक्ट इंटरफ़ेस द्वारा परिभाषित कॉल का समर्थन करता है और हमारे लिए कास्ट रखने के लिए कुछ जादू करता है।
मेरा अनुमान है कि यह सी # 4 में समर्थित नहीं है (मैं इसका संदर्भ नहीं ढूंढ पाया), लेकिन मैं निश्चित रूप से जानना चाहता हूं। और यदि यह नहीं है, तो मैं चर्चा करना चाहता हूं कि इसे भाषा के भविष्य के संस्करण में शामिल किया जाना चाहिए या नहीं, और इसके कारण और इसके विपरीत। मेरे लिए, यह मौजूदा ढांचे प्रकारों को लपेटने के लिए पूरे नए प्रकार बनाने के बिना कोड में अधिक बहुलकता को सक्षम करने के लिए एक अच्छा जोड़ा लगता है।
अद्यतन
ऐसा न हो कि कोई मुझे साहित्यिक चोरी का आरोप, मैं Jon Skeet having already proposed this के बारे में पता नहीं था। हालांकि, यह जानकर अच्छा लगा कि हमने अत्यधिक समान वाक्यविन्यास के बारे में सोचा, जो बताता है कि यह कम से कम सहज हो सकता है। इस बीच, "एक मूल विचार है" एक और दिन के लिए मेरी बाल्टी सूची पर बना हुआ है।
क्या यह अनिवार्य रूप से संरचनात्मक टाइपिंग नहीं है (http://en.wikipedia.org/wiki/Structural_typing)? – Noldorin
@ नोल्डोरिन: धन्यवाद, मुझे नहीं पता था कि इसका नाम था। उस पर स्कैनिंग, मैं कहूंगा कि हाँ, यह है। –
@ जेफ: हाँ, अब मैं बहुत आश्वस्त हूं कि वे * एक ही चीजें हैं, भले ही जॉन स्कीट के ब्लॉग पोस्ट पर कुछ टिप्पणियां इसे बतख टाइपिंग के रूप में वर्णित करती हैं (जो संरचनात्मक टाइपिंग से काफी अलग है)। जो भी हो, यह एक बहुत अच्छा विचार है ... शायद सी # 5 में कुछ करना चाहते हैं। :) – Noldorin