2012-12-30 4 views
6

:MonoTouch 및 지원 변형 제네릭 인터페이스

오류 CS1961 : 나는 MonoTouch 6.0.8에 대해 컴파일하려고 할 때

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

그러나 나는이 오류가 나타납니다 : 공변 유형 매개 변수 'T'는 'covarianttest.ITest'에서 항상 유효해야합니다.

그래서 MonoTouch는 공변량/반동적인 일반 인터페이스 확장을 지원하지 않는다고 가정합니까? 그렇다면 MonoTouch에서이 상황에 대한 권장 해결 방법은 무엇입니까?

답변

6

이것은 실제로 Mono 버전이 아닌 컴파일러 (및 프로필/런타임)에 의존합니다. MonoTouch 6.x가 아닌 Mono 2.10에서 작동하는 항목이 있습니다.

현재 MonoTouch 버전은 smcs 컴파일러와 2.1 기반 프로필 (대부분 Silverlight 및 일부 .NET 4.0 추가)이 함께 제공됩니다.

공분산과 같은 최신 기능에는 전체 4.0 컴파일러 (예 : Mono 2.10의 dmcs 또는 mcs의 Mono 3.0)와 런타임이 필요합니다.

향후 MonoTouch 버전 (2013 년 초에 알파/베타 버전 예정)은 4.0/4.5 런타임 및 컴파일러를 제공합니다.

+0

MonoTouch는 현재 공동/대조 (Contra-variance)를 지원하지 않으며 향후 언젠가는 정확할 수도 있습니다. –

+0

예. 대부분의 .NET/CLR 4.x 기능은 MonoTouch에서 ** 아직 ** 사용할 수 없지만 MT가 Mono 3.0 (및 새'mcs' 컴파일러)에 리베이스되면 사용할 수 있습니다. – poupou

+0

감사합니다. @poupou! –