2012-12-30 7 views
6

उदाहरण नीचे नियमित रूप से मोनो 2.10.9 में ठीक संकलित:MonoTouch और समर्थन संस्करण सामान्य इंटरफेस

त्रुटि CS1961:

namespace covarianttest 
{ 
    public interface ITest<out T> : IEnumerable<T> 
    { 
    } 
} 

हालांकि जब मैं MonoTouch 6.0.8 के खिलाफ यह संकलन प्रयास मैं यह त्रुटि प्राप्त : Covariant टाइप पैरामीटर 'टी' को 'covarianttest.ITest' पर अविश्वसनीय रूप से मान्य होना चाहिए

तो क्या मुझे लगता है कि मोनो टच अभी तक विस्तारित/contravariant जेनेरिक इंटरफेस को विस्तारित करने का समर्थन नहीं करता है? यदि ऐसा है तो मोनो टच में इस स्थिति के लिए अनुशंसा की सिफारिश क्या है?

उत्तर

6

यह वास्तव में संकलक (और प्रोफ़ाइल/रनटाइम) पर निर्भर करता है जो मोनो संस्करण नहीं है। IOW कुछ चीजें मोनो 2.10 पर काम कर सकती हैं और मोनो टच 6.x के साथ नहीं।

smcs कंपाइलर और 2.1 आधारित प्रोफ़ाइल (ज्यादातर सिल्वरलाइट और कुछ .NET 4.0 परिवर्धन) के साथ मोनो टच जहाजों के वर्तमान संस्करण।

नई सुविधाओं, जैसे कॉन्वर्सिस, को पूर्ण 4.0 कंपाइलर (उदा। dmcs मोनो 2.10 या mcs मोनो 3.0 में) और रनटाइम की आवश्यकता है।

मोनो टच के भविष्य के संस्करण (2013 की शुरुआत में अल्फा/बीटा के साथ इस वसंत की संभावना) 4.0/4.5 रनटाइम और कंपाइलर प्रदान करेगा।

+0

तो आप कह रहे हैं कि मोनो टच इस समय सह/कॉन्ट्रा-भिन्नता का समर्थन नहीं करता है, और भविष्य में यह कभी-कभी सही हो सकता है? –

+0

हां, अधिकांश .NET/CLR 4.x विशेषताएं ** अभी तक ** मोनो टच में उपलब्ध नहीं हैं लेकिन मोनो 3.0 (और नया 'एमसीएस' कंपाइलर) पर एमटी को रिबेस करने के बाद वे उपलब्ध हो जाएंगे। – poupou

+0

धन्यवाद @poupou! –

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