सी # 7 में हम Deconstruct
विधि को कार्यान्वित कर सकते हैं जिसे किसी ऑब्जेक्ट को मिलान प्रकारों के साथ टुपल में निर्दिष्ट करते समय बुलाया जाएगा।सी # 7: एक इंटरफेस के माध्यम से ट्यूपल डीकनस्ट्रक्शन क्यों लागू नहीं किया जाता है?
मुझे आश्चर्य है कि माइक्रोसॉफ्ट ने इसे "जादू विधि" के रूप में लागू करने का फैसला क्यों किया। यह विशेष रूप से नामित विधि है जिसे कहीं से विरासत में नहीं मिला है और यदि आप इसे सही नाम देते हैं और सही पैरामीटर डालते हैं, तो आप इस ऑब्जेक्ट को संबंधित टुपल को असाइन करने में सक्षम होंगे।
मुझे कल्पना होगी कि डिजाइन टीम इस उद्देश्य के लिए एक इंटरफेस तैयार करेगी।
कुछ की तरह:
public interface IDecontructible<T1>
{
void Deconstruct(out T1 a);
}
public interface IDecontructible<T1, T2>
{
void Deconstruct(out T1 a, out T2 b);
}
public interface IDecontructible<T1, ... ,Tn>
{
void Deconstruct(out T1 a, ... ,out Tn n);
}
बेशक वहाँ मापदंडों के विभिन्न संख्या के साथ और अधिक इंटरफेस होना जरूरी होगा।
क्या इस डिजाइन विकल्प के लिए कोई स्पष्ट कारण है, कि मुझे याद आ रही है?
FWIW इस विशिष्ट बिट के लिए डिज़ाइन नोट्स [यहां उपलब्ध हैं] (https://github.com/dotnet/csharplang/blob/master/meetings/2016/LDM-2016-05-03-04.md), आगे की चर्चाओं [मुख्य Deconstruction पृष्ठ से जुड़े] के साथ [https://github.com/dotnet/roslyn/blob/master/docs/features/deconstruction.md)। –
इंटरफेस के साथ नामों की धारणा संभव नहीं होगी। –