2012-12-30 33 views
6

:MonoTouch ve destekleyici varyant genel arabirimleri

Hata cs1961: Ben MonoTouch 6.0.8 karşı derlemek çalıştığınızda

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

Ancak bu hatayı alıyorsunuz : Kovaryant tip parametresi 'T' değişmez olarak 'covarianttest.ITest' üzerinde geçerli olmalıdır.

MonoTouch'ın henüz kovaryant/kontravaryant jenerik arayüzleri genişletmeyi desteklemediğini varsayabilir miyim? Öyleyse MonoTouch'da bu durum için önerilen çözüm nedir?

cevap

6

Bu aslında derleyici (ve profil/çalışma zamanı) bağlı değildir Mono sürümü. IOW bazı şeyler MonoTouch 6.x ile değil, Mono 2.10'da çalışabilir. smcs derleyici ile MonoTouch gemilerin

Güncel sürümler ve 2.1 tabanlı profil (çoğunlukla Silverlight ve bazı NET 4,0 eklemeler).

Kovaryans gibi daha yeni özellikler, tam 4.0 derleyicisini (örneğin, Mono 2.10'da dmcs veya Mono 3.0'da mcs) ve çalışma zamanını gerektirir. MonoTouch (erken 2013 yılında alfa/beta ile büyük olasılıkla bu bahar) ait

Gelecek sürümleri 4.0/4.5 çalışma zamanını ve derleyici sağlayacaktır.

+0

Yani MonoTouch şu anda Eş/Contra-varyansı desteklemediği diyorsun, ve ileride doğru may? –

+0

Evet, çoğu .NET/CLR 4.x özellikleri ** değildir henüz ** mevcut MonoTouch ama MT Mono 3.0 (ve yeni 'mcs' derleyici) üzerine rebased sonra onlar kullanılabilir hale gelecektir. – poupou

+0

Teşekkürler @poupou! –